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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.05.2009, 22:06   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
daxsol: Работа с классом xSysLastValue
Источник: http://daxsol.blogspot.com/2009/04/xsyslastvalue.html
==============

Иногда возникает необходимость генерации диалога без использования классов-наследников RunBase.Но при этом возникает желание запоминать и восстанавливать последние введенные значения в диалоге.
В этом случае воспользуемся функционалом класса xSysLastValue.




X++:
//  adi  30.04.2009  TSK0827
boolean prompt()
{
    boolean         ret;
    Dialog          dlg;
    DialogField     dfFromDate, dfToDate;
    DialogField     dfRContractType;
    DialogField     dfRContractCode;
    DialogField     dfRContractWayOfDeploymentId;
    container       lastValues;
    ;

    lastValues = xSysLastValue::getValue(curExt(), curUserId(), UtilElementType::Class, classStr(TemplateExcel_SameNameBalance));
    [fromDate, toDate, RContractType, RContractCode, RContractWayOfDeploymentId] = lastValues;
    RContractCode = RContractCode == "0" ? "" : RContractCode;
    RContractWayOfDeploymentId = RContractWayOfDeploymentId == "0" ? "" : RContractWayOfDeploymentId;

    dlg                             = new Dialog("Настройка отчета");

    dfFromDate                      = dlg.addFieldValue(typeid(TransDate), fromDate, 'Дата С');
    dfToDate                        = dlg.addFieldValue(typeid(TransDate), toDate, 'Дата По');
    dfRContractType                 = dlg.addFieldValue(typeId(RContractType), RContractType, "");
    dfRContractCode                 = dlg.addFieldValue(typeId(RContractCode), RContractCode, "");
    dfRContractWayOfDeploymentId    = dlg.addFieldValue(typeId(RContractWayOfDeploymentId), RContractWayOfDeploymentId, "");

    if (dlg.run())
    {
        ret = true;
        fromDate                    = dfFromDate.value();
        toDate                      = dfToDate.value();
        RContractType               = dfRContractType.value();
        RContractCode               = dfRContractCode.value();
        RContractWayOfDeploymentId  = dfRContractWayOfDeploymentId.value();
        lastValues = [fromDate, toDate, RContractType, RContractCode, RContractWayOfDeploymentId];
        xSysLastValue::putValue(lastValues, curExt(), curUserId(), UtilElementType::Class, classStr(TemplateExcel_SameNameBalance));
    }
    else
        ret = false;

    return ret;
}

Источник: http://daxsol.blogspot.com/2009/04/xsyslastvalue.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 16.05.2009, 10:23   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Blog bot Посмотреть сообщение
X++:
    lastValues = ... UtilElementType::Class, classStr(TemplateExcel_SameNameBalance));
Я так понимаю, что TemplateExcel_SameNameBalance - это наименование класса, из которого взят пример.

В принципе нужно будет менять это название каждый раз при использовании в других классах. Лучше использовать classId2Name(classIdGet(this)) для работы в классах

вот так:
X++:
    lastValues = ... UtilElementType::Class, classId2Name(classIdGet(this));
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Alucardkds (1).
Старый 16.05.2009, 12:17   #3  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
На мой взгляд, подобная реализация годится только для каких-нибудь тестовых джобов.
А в жизни нужно использовать методы шаблона \Classes\SysSaveable.
Недостатки данного метода:
1. Не задаются значения по-умолчанию
2. Трудоёмко менять состав сохраняемых значений (нужно сносить строки из sysLastValue)
3. Нестандартность, а => возможная потеря работоспособности кода в будущих версиях DAX
За это сообщение автора поблагодарили: mazzy (1).
Старый 16.05.2009, 13:48   #4  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А в комментах блога оставил замечания под именем Алексей (ну гугловский почтовик почему-то выдал имя а не ник).
Основное замечание: в статье решение "в лоб" без учета того, как такой вопрос решается в стандартном приложении.
Старый 18.05.2009, 18:42   #5  
Jox is offline
Jox
Developer
Аватар для Jox
 
112 / 24 (1) +++
Регистрация: 26.07.2005
Адрес: Питер
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я так понимаю, что TemplateExcel_SameNameBalance - это наименование класса, из которого взят пример.

В принципе нужно будет менять это название каждый раз при использовании в других классах. Лучше использовать classId2Name(classIdGet(this)) для работы в классах

вот так:
X++:
    lastValues = ... UtilElementType::Class, classId2Name(classIdGet(this));
согласен.
Старый 19.05.2009, 12:18   #6  
Jox is offline
Jox
Developer
Аватар для Jox
 
112 / 24 (1) +++
Регистрация: 26.07.2005
Адрес: Питер
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
А в комментах блога оставил замечания под именем Алексей (ну гугловский почтовик почему-то выдал имя а не ник).
Это в настройках аккаунта гугла есть опция отображать имя, а не ник пользователя.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Подработка для Програмистов Axapta, работа по тз ,удаленная работа setstereo Рынок труда Microsoft Dynamics 3 03.06.2008 16:35
Работа с классом AsciiIO longson DAX: Программирование 7 08.07.2007 19:02
Класс xSysLastValue Maxim Gorbunov DAX: База знаний и проекты 0 27.11.2001 17:39

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

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

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