![]() |
#10 |
MCITP
|
![]() Цитата:
Сообщение от DSPIC
![]() 1. Если это нужно сделать для конкретной формы, то лучше этот функционал написать на форме (а ещё лучше в классе и вызывать из формы). Если это нужно для таблицы, которая светится на нескольких формах, то лучше этот функционал написать на таблице, но при этом проверять, что вызов произошел из нужной формы, т.к. изменение полей таблицы может происходить не только по явной инициативе пользователя.
2. В примере данном примере вызов происходит на датасорсе формы Address, метод validateWrite(): X++: public boolean validateWrite() { boolean ret; Tutorial_RunbaseForm tutorial_RunbaseForm; ; ret = super(); if (ret && Address.RecId) { if (Address.Name != Address.orig().Name) { tutorial_RunbaseForm = Tutorial_RunbaseForm::construct(); if (tutorial_RunbaseForm.prompt()) { tutorial_RunbaseForm.run(); } else { Address.reread(); ret = checkfailed("ПОля не сохранены"); } } } return ret; } В качестве диалога\формы для указания причины изменения подставил диалог tutorial_RunbaseForm. У вас должен быть свой. 3. Это первый пример, который пришел в голову, соотв-нно на красивость и полную корректность не претендует. ![]() validateWrite() - идёт без транзакции, а сам update() потом пойдёт уже отдельной транзакцией ![]() Соответсвенно потенциально имете проблему, когда лог вставился, а изменения не прошли. ![]() Вариант belugin-а может и лишён конкретно этого недостатка (чего уже придираться то, кстати, - понятно же что он имел ввиду ![]() ![]()
__________________
Zhirenkov Vitaly |
|