Показать сообщение отдельно
Старый 12.04.2011, 09:25   #10  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 124 (5) +++++
Регистрация: 14.12.2001
Какая версия AX? Если 2009, то у метода FormDataSource.research() появился булевый параметр _retainPosition, который позволяет сохранить позицию при обновлении данных формы.

Если версия более ранняя, то вроде так должно сработать:
X++:
Common common;

common.data();

// обработка...

_ds.research();
_ds.findRecord(common);
Как вариант модно вместо findRecord() использовать findValue(), с помощью которого можно найти запись по значению одного поля. В данном случае надо искать по уникальному полю, если оно есть, либо по RecId. Но если индекса по искомому полю нет, а записей много, этот вариант может долго отрабатывать:

X++:
anytype uniqueValue;

uniqueValue = x.UniqueField;

// обработка...

_ds.research();
_ds.findValue(fieldnum(X, UniqueField), SysQuery::value(uniqueValue));

Еще можно использовать element.args().lookupField() и element.args().lookupValue():
X++:
anytype uniqueValue;

uniqueValue = x.UniqueField;

// обработка...

element.args().lookupField(fieldnum(X, UniqueField)); 
element.args().lookupValue(SysQuery::value(uniqueValue));
_ds.research();
За это сообщение автора поблагодарили: Poleax (1), Geo (2), jeky (1).