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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.03.2023, 17:15   #1  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Как получить Name и Label по значению enuma
Можно ли по значению enum-а получить текстовое значение Name и Label?
Есть системный класс SysDictEnum, который содержит методы возвращающие Name и Label, но параметры этих методов или Index или Value, т.е. значение типа int.

Например:
Классы
SysDictEnum:Класс SysDictEnum

Вычисляемые поля
$EnumNoYes:Вычисляемое поле = SysDictEnum.newName("NoYes"): Запись
Методы
index2Label:Строка (_index: Integer)
index2LabelId:Строка (_index: Integer)
index2Name:Строка (_index: Integer)
index2Symbol:Строка (_index: Integer)
index2Value:Integer (_index: Integer)
value2Index:Integer (value: Integer)
value2Label:Строка (_value: Integer)
value2Name:Строка (_value: Integer)

Но как получить для значения enum-а его index или value? Не могу найти такого метода - может кто-то может подсказать?
И можно ли тоже самое получить не для enum-а АХ, а для enum-а модели ER?
Старый 19.03.2023, 17:44   #2  
Pandasama is offline
Pandasama
Участник
 
478 / 141 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Цитата:
Но как получить для значения enum-а его index или value
А что вы под значением энума понимаете? NoYes::Yes - это как раз integer
Старый 20.03.2023, 09:46   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,737 / 1223 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Тоже не очень понимаю сам вопрос. Но, может быть, помогут такие примеры

X++:
    SysDictEnum     sysDictEnum;
    ;
    
    sysDictEnum = new SysDictEnum(enumNum(NoYes));
    info(strFmt("sysDictEnum.value2Symbol(NoYes::Yes) = %1",sysDictEnum.value2Symbol(NoYes::Yes)));
    info(strFmt("sysDictEnum.value2Name(NoYes::Yes) = %1",sysDictEnum.value2Name(NoYes::Yes)));
Также есть некоторые другие способы получения того же самого

X++:
    info(strFmt("NoYes::Yes = %1", NoYes::Yes));
    info(strFmt("NoYes::Yes+0 = %1", NoYes::Yes+0));
    info(strFmt("any2int(NoYes::Yes) = %1", any2int(NoYes::Yes)));
    info(strFmt("enum2int(NoYes::Yes) = %1", enum2int(NoYes::Yes)));
    info(strFmt("enum2str(NoYes::Yes) = %1", enum2str(NoYes::Yes)));
    info(strFmt("enum2Symbol(enumNum(NoYes), NoYes::Yes) = %1", enum2Symbol(enumNum(NoYes),NoYes::Yes)));
    info(strFmt("enum2Value(NoYes::Yes) = %1", enum2Value(NoYes::Yes)));
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...