![]() |
#2 |
Участник
|
Через столько лет пришлось озадачится, что же все таки делает метод setCurrent. И правильного ответа здесь не нашел. Но выяснил.
setCurrent пихает данные из текущего курсора FormDataSource в кэш данных FormDataSource. Пример для понимания. cliked на форме с датасорсом table1: X++: void clicked() { Table1 t1; ; super(); info(strFmt("%1", table1.field1)); t1.data(table1); t1.field1 = "новое значение"; table1.data(t1); table1_DS.setCurrent(); info(strFmt("%1", table1.field1)); } И получается что этот код не меняет данных в БД, но форма будет отображать "новое значение" в поле "field1" на всех записях на которых вызовете clicked(). Пока не произойдет вызов executeQuery() или reread(). А без setCurrent() форма не хранит "новое значение" и сбрасывает, например, при переходе к другой записи. Проверял на DAX2012. |
|