31.07.2008, 05:15 | #1 |
китайский стажер
|
Research, refresh, reread шпаргалка
Хочу поделиться радостью.
Была простая и смешная проблема - надо было сделать чтобы строка закупки блокировалась если отправлена на одобрение и разблокировалась после одобрения, и одобрение могло быть выполнено автоматически или вручную. Были страдания часа на два а может быть и три, как эту форму с закупками обновить так, чтобы курсор никуда не упрыгивал, строчки обновлялись и данные в строчках обновлялись тоже, ну и конечно чтобы блокировка-разблокировка строк все-таки работала. Плохо китайскому стажеру - не у кого спросить, пришлось тыкаться методом научного тыка, пока не нашлась статья вот здесь: http://www.mail-archive.com/axapta-k.../msg09550.html . Человек тоже поделился радостью понимания Вот коротенько перевод надеюсь близко к тексту: -- .refresh() не читает повторно данные из базы данных, а просто обновляет экран вместе со всем, что хранится в кешэ формы. .reread() считает повторно из базы данных только ТЕКУЩУЮ запись, поэтому не нужно использовать это для того, чтобы обновить данные формы если вы добавили или удалили записи. Это часто используется если вы изменили какие-нибудь значения в текущей записи с помощью метода, и отправляете эти значения в бащу данных используя метод update() на таблице вместо того, чтобы работать с источником данных формы. В этом случае метод reread() отобращит эти изменения на форме. .research() выполнит существующий запрос источника данных формы, обновляя информацию как о новых и удаленных записях, так и о существующих. Этот метод сохранит любые существующие фильтры и сортировки на форме. .executeQuery() - еще один полезный метод. Его следует использовать если вы изменили запрос в методе (с помощью программирования) и желаете обновить форму. Этот метод похож на .research() , однако он берет в расчет изменения в запросе. В общем случае, вам нужен только один из этих методов в разных обстоятельствах. ---- В общем у меня получился вот такой код для обновления: X++: void clicked() { ; super(); purchline::PLApprovalStatus(purchline); lines_ds.reread(); lines_ds.research(); } |
|
|
За это сообщение автора поблагодарили: macklakov (3), G.Menshikh (1), miklenew (2), dreamer (1), alex55 (1), jeky (1). |
Теги |
executequery, formdatasource, refresh, research, полезное, программно |
|
|