AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2009, 17:25   #10  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от 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;
}
Здесь проверяется на изменение поле "Name".
В качестве диалога\формы для указания причины изменения подставил диалог tutorial_RunbaseForm. У вас должен быть свой.

3. Это первый пример, который пришел в голову, соотв-нно на красивость и полную корректность не претендует.
Всё бы хорошо, если б не одно "НО".
validateWrite() - идёт без транзакции, а сам update() потом пойдёт уже отдельной транзакцией
Соответсвенно потенциально имете проблему, когда лог вставился, а изменения не прошли.

Вариант belugin-а может и лишён конкретно этого недостатка (чего уже придираться то, кстати, - понятно же что он имел ввиду ), но в этом случае будет выскакивать запрос пользователю во время выполнения транзакции, что, я думаю все понимают, не есть гут..
__________________
Zhirenkov Vitaly
Теги
запись, как правильно, комментарий

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axperf: Create RecID index on tables with Created/Modified DateTime fields Blog bot DAX Blogs 0 20.06.2009 10:05
modified, leave Varmen DAX: Программирование 7 19.03.2009 13:51
Вызов метода modified DS Mike2005 DAX: Программирование 1 17.10.2006 13:45
modified два раза два раза MironovI DAX: Программирование 5 14.07.2006 16:29
Транзакция в modified Gad DAX: Программирование 1 29.11.2005 19:54

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:57.