Какая версия 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();