Извините, просто сложилось впечатление, что вы не на 100% понимаете, как все эти reread, refreshEx и т.п. методы работают, решил подбросить ссылку.
Если research работает, как насчет запомнить выделенные записи перед вызовом research, а потом выделить их из кода?
X++:
void clicked()
{
Table1 table1Local;
Table1 table1ForUpdate;
MultiSelectionHelper helper = MultiSelectionHelper::construct();
Set selectedRecords = new Set(Types::Record);
SetEnumerator selectedRecordEnumerator;
helper.parmDatasource(Table1_ds);
table1Local = helper.getFirst();
while (table1Local.RecId != 0)
{
selectedRecords.add(table1Local.data());
ttsBegin;
select firstonly forUpdate table1ForUpdate
where table1ForUpdate.RecId == table1Local.RecId;
table1ForUpdate.Field1 = 'some value';
table1ForUpdate.update();
ttsCommit;
table1Local = helper.getNext();
}
Table1_ds.research();
selectedRecordEnumerator = selectedRecords.getEnumerator();
while (selectedRecordEnumerator.moveNext())
{
table1Local = selectedRecordEnumerator.current();
Table1_ds.findRecord(table1Local);
Table1_ds.mark(true);
}
}