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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.06.2011, 08:15   #26  
leva is offline
leva
Участник
 
52 / 36 (2) +++
Регистрация: 03.08.2005
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если передан параметр (parmXXX), то он инициализирует значение объекта на форме диалога и он же будет сохранен, если пользователь его не изменит.
Т.е. мало того, что вводятся дублирующие параметры, так ещё и принимается, что если что-то пусто, то оно не инициализировано. Нет, это не выход и это уже здесь обсуждалось. И с тем, что это что-то упростит я не согласен.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
С Query - чуть сложнее, но тоже не особо. Ведь в любом случае должен быть метод по его созданию. Вот в этом методе и анализировать значение параметра.
В том то и дело, что такой метод есть. Только не забываем, что этот query как правило выводится в диалоге и может быть там изменён. А значит, нужно этот метод вызвать после того как новые parm-параметры заданы, но перед тем как они будут упакованы и отправлены клиентскому объекту (мне пришёл в голову только вариант переопределить prompt и перез super() вызвать.) Либо вызывать при каждом unpack, что добавляет два лишних перестроения этого запроса (даже больше, если это будет пакетным заданием). В моем варианте это делается один раз.

Вот мой вариант с Query. Здесь initQuery тот самый метод, что строит запрос (на основе переданного в качестве параметра).

X++:
public boolean unpack(container packedClass)
{
    Version     version = runbase::getVersion(packedClass);
    container   packedQuery;
    Query       query;
    container   params = [#ParamsList];

    switch (version)
    {
        case #CurrentVersion:
            [version, #CurrentList, packedQuery] = packedClass;
            if (packedQuery && SysQuery::isPackedOk(packedQuery))
                query = new Query(packedQuery);
            if (! query)
                throw error("Ошибка");

            if (inPrompt && inGetSaveLast)
            {
                [#ParamsList] = params;
                queryRun = new QueryRun(this.initQuery(query));
            }
            else
                queryRun = new QueryRun(query);

            break;

        default:
            return false;
    }

    return true;
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Глюк RunBase (AX40sp2) Alexx7 DAX: Программирование 7 22.01.2010 10:59
Inside Dynamics AX 4.0: RunBase Framework Extension Part IV Blog bot DAX Blogs 0 02.10.2007 04:49
Inside Dynamics AX 4.0: RunBase Framework Extension Part III Blog bot DAX Blogs 0 02.10.2007 04:49
Inside Dynamics AX 4.0: RunBase Framework Extension Part I Blog bot DAX Blogs 0 30.09.2007 09:20
Некоторые вопросы внедрения приложений. Часть 2 Михаил Ковалев DAX: Прочие вопросы 0 27.05.2002 10:43

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

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

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