02.10.2008, 15:37 | #1 |
Участник
|
Переход на первую строку SalesLine_ds при вызове SalesTable_ds.write()
Форма SalesTable. В методе поля DataSource
\Forms\SalesTable\Data Sources\SalesLine\Fields\SalesQty\Methods\modified() возникал необходимость вызвать salesTable_ds.write() Все отрабатывает нормально, но по завершении кода происходит "перескок" указателя на первую запись SalesLine данного заказа. Как предотвратить уход фокуса с текущей записи или вернуть указатель в исходное положение после этого? Проблема в том, что этот "перескок" происходит после отработки всех кодов. Трассировщик заканчивает работу. Нет кода по которому трассировщик еще мог бы пройти. Непонятно, где можно принудительно вернуть указатель на исходную строку? В каком методе? Ax 2.5 SP3 |
|
02.10.2008, 15:57 | #2 |
Участник
|
Скорее всего таким образом отрабатывает Dynalink. Он как раз срабатывает после небольшой паузы.
Если это так, то может быть пошаманить с методом linkActive() на salesLine_ds. Например не вызывать super(). Или попробовать избавиться от вызова salesTable_ds.write() |
|
02.10.2008, 16:19 | #3 |
Участник
|
Да. Была такая мысль. Только с LinkActive шаманить опасно. Один раз блокируешь super() и он просто отключается. Навсегда. Пока блокирую через переменную SalesLine.executeQuery(). Но какое-то это кривоватое решение...
|
|
02.10.2008, 16:42 | #4 |
Участник
|
Мы похожую болезнь решали немного по другому - на ExecuteQuery() после super ставили findRecord() нужной записи. Работает нормально.
Правда тоже некрасиво - кривизна. |
|
|
За это сообщение автора поблагодарили: Владимир Максимов (3). |
02.10.2008, 18:08 | #5 |
Участник
|
После анализа кода все-таки удалось отказаться от вызова SalesTable_ds.write(). Вызываю напрямую табличный метод SalesTable.write().
Спасибо, за подсказку. |
|