Показать сообщение отдельно
Старый 18.02.2015, 10:48   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,720 / 1207 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вероятно, у Вас в методе this.docinsert(first) происходит перемещение указателя записи purchTable. Вам надо запомнить текущее положение записи до вызова этого метода и восстановить после

X++:
PurchTable    purchTableFind;
;
// Запоминаем текущее положение
purchTableFind = PurchTable::find(purchTable.PurchId)

(...)

this.docinsert(first);

// На источнике данных восстанавливаем текущее положение
purchTable_ds.findRecord(purchTableFind);

super();
Правда, следует иметь в виду, что метод purchTable_ds.findRecord() работает относительно медленно. Поэтому лучше проанализировать Ваш метод this.docinsert(first); с тем, чтобы в нем не происходило перемещение указателя записи по источнику данных. Ну, или он возвращал указатель в исходное положение

Возможно, Вам еще понадобиться предварительно сделать перезапрос к базе данных, если в Вашем методе происходит изменение данных PurchTable. Тогда надо добавить

X++:
PurchTable    purchTableFind;
;
// Запоминаем текущее положение
purchTableFind = PurchTable::find(purchTable.PurchId)

(...)

this.docinsert(first);


// Синхронизация с базой данных
purchTable_ds.research();

// Обновление "картинки" на форме
purchTable_ds.reread();

// На источнике данных восстанавливаем текущее положение
purchTable_ds.findRecord(purchTableFind);

super();
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: at5454 (1).