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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.07.2020, 18:12   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
сначала dictField.typeId();
потом:
X++:
 public void populateTree()
    {
        DictEnum          policyRuleTypeEnum;
        int               i;
        policyRuleTypeEnum = new DictEnum(enumNum(SysPolicyRuleTypeEnum));


        for(i = 0; i < policyRuleTypeEnum.values(); i++)
        {
            str sym = policyRuleTypeEnum.value2Symbol(i);
            info(strFmt("%1 %2 %3", i, policyRuleTypeEnum.value2Name(i), sym));
        }

    }
__________________
Felix nihil admirari
Старый 13.08.2020, 13:47   #2  
oleggy is offline
oleggy
Участник
 
279 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
.
Старый 13.08.2020, 21:18   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,709 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от wojzeh Посмотреть сообщение
сначала dictField.typeId();
потом:
X++:
 public void populateTree()
    {
        DictEnum          policyRuleTypeEnum;
        int               i;
        policyRuleTypeEnum = new DictEnum(enumNum(SysPolicyRuleTypeEnum));


        for(i = 0; i < policyRuleTypeEnum.values(); i++)
        {
            str sym = policyRuleTypeEnum.value2Symbol(i);
            info(strFmt("%1 %2 %3", i, policyRuleTypeEnum.value2Name(i), sym));
        }

    }
Если уж используешь value2Symbol, тогда в качестве максимального значения счетчика цикла надо ставить 255. Иначе если есть разрывы в значениях, то просто все значения не получишь

Т.е. или в цикле i < policyRuleTypeEnum.values(), но тогда внутри policyRuleTypeEnum.index2Value(i)

Или внутри цикла policyRuleTypeEnum.value2Symbol(i), но тогда в самом цикле I < 255

Для примера, подставь Base Enum с именем UtilElementType. Он как раз на 100 элементах и завершит работу, несмотря на тот факт, что есть значения и больше 100
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 14.08.2020, 05:42   #4  
oleggy is offline
oleggy
Участник
 
279 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
в цикле i < policyRuleTypeEnum.values(), но тогда внутри policyRuleTypeEnum.index2Value(i)
Или внутри цикла policyRuleTypeEnum
А как вывести системное название текущего значения Enum если в цикле используешь values() ?
Действительно value2Symbol(i) пишет фигню.


X++:
    Name enumName = 'InventTransType';
    DictEnum    dictEnum = new DictEnum(enumName2Id(enumName));
    Name nameLabel, nameSys;
    AnyType enumValue;
    Counter     i;
    ;
    setprefix('Сообщения');

    if (true) // 255
    {
        for (i = 0; i < 255; i++)
        {
            nameLabel = dictEnum.value2Name(i);
            nameSys = dictEnum.value2Symbol(i);
            if (nameSys)
                info(strfmt('%1\t%2 ("%3") = %4', enumName, nameSys, nameLabel, i));
        }
    }
    else // values()
    {
        for (i = 0; i < dictEnum.values(); i++)
        {
            enumValue = dictEnum.index2Value(i);
            //nameSys = dictEnum.value2Symbol(i); // некорректно выводит
            info(strfmt('%1\t%2 = %3', enumName, nameSys, enumValue));
        }
    }

Последний раз редактировалось oleggy; 14.08.2020 в 05:49.
Старый 14.08.2020, 08:53   #5  
oleggy is offline
oleggy
Участник
 
279 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от oleggy Посмотреть сообщение
А как вывести системное название текущего значения Enum если в цикле используешь values() ?
Разобрался.

X++:
    for (i = 0; i < dictEnum.values(); i++)
        {
            enumValue = dictEnum.index2Value(i);
            nameLabel = dictEnum.index2Label(i);
            nameSymbol = dictEnum.index2Symbol(i);
            info(strfmt('%1\t%2 ("%3") = %4', enumName, nameSymbol, nameLabel, enumValue));
        }
Теги
enum

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Программно получить обороты по счету propeller DAX: Программирование 13 09.06.2011 14:13
Как программно получить стек вызовов? Bega DAX: Программирование 2 22.12.2010 18:46
Как получить метки всех элементов всех форм (DAX 4) Qaz Qwerty DAX: Программирование 1 09.08.2008 05:39
Как получить список файлов заданной папки demetra DAX: База знаний и проекты 3 01.11.2006 14:51
Список всех окон Artild DAX: Программирование 1 25.06.2003 13:20

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

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

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