|  19.03.2023, 17:15 | #1 | 
| Участник | Как получить 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 | 
| Участник | Цитата: 
		
			Но как получить для значения enum-а его index или value
		
	 | 
|  | 
|  20.03.2023, 09:46 | #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))); 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  20.03.2023, 17:09 | #4 | 
| Участник | 
			
			Зачем это нужно: в модели создал enum ER_NoYes Значение Метка Описание Yes Yes Да No No Нет В маппинге модели в источниках объявил Перечисления Dynamics 365 for Operations NoYes:Перечисление Dynamics 365 for Operations NoYes Перечисления модели данных ER_NoYes:Перечисление модели данных ER_NoYes Полю модели Status присвоил значение Status:Status Значение перечисления = CASE(@.Status, NoYes.Yes, ER_NoYes.Yes, NoYes.No, ER_NoYes.No) Теперь в маппинге формата нужно в Excel-ячейку вывести значение поля модели Status в текстовом виде (Да или Нет). Можно, конечно написать "обратный" CASE Ячейка<Status> = CASE(@.Status, ER_NoYes.Yes, "Да", ER_NoYes.No, "Нет") Но хочется избежать задание одного и того же текста и в модели при описании enum-а и в формате для выражения значения ячейки. Хочется получить что-то типа Ячейка<Status> = Label(@.Status) и/или Ячейка<Status> = Name(@.Status) Это на примере enum-a с 2 значениями, а когда в нем 20-30 значений то CASE получается очень уж громоздкий. | 
|  | 
|  20.03.2023, 17:17 | #5 | 
| Участник | 
			
			В контексте кода на Х++ я уже встречал использование функций enum2Value(NoYes::Yes), enum2str(NoYes::Yes) и т.п. но из конфигуратора я же не могу обращаться к функциям, только к методам класса, объявленного как класс или объект. А найти класс в котором эти функции реализованы как методы мне не удалось. Может Вы знаете в каком классе это реализовано? В Global их точно нет. | 
|  | 
|  20.03.2023, 17:25 | #6 | 
| Участник | 
			
			enum2Value - в GLobal, enum2str в системных функциях (версия 2012 R3)
		 | 
|  | 
|  21.03.2023, 09:44 | #7 | 
| Участник |  | 
|  | 
|  21.03.2023, 10:46 | #8 | 
| Участник | 
			
			Вот скриншот с абсолютно чистой аксапты с Global PS Да видно что этот движок подтягивает далеко не весь Global. Уж как выбирает - не знаю. Может коллеги подскажут Последний раз редактировалось LETTO; 21.03.2023 в 10:58. | 
|  | 
|  21.03.2023, 19:32 | #9 | 
| Участник | 
			
			Предположу, не глядя сильно в код что систему смущает anytype. Обоснований можно придумать сотню как и способов обхода. На MS с исправлением не надеялся бы. | 
|  | 
|  22.03.2023, 16:24 | #10 | 
| Участник | 
			
			Можно предположить, что в форме Конструктора ER "пропускаются" те методы классов, у которых тип параметра void/anytype. Может синтакс-контроль Конструктора не умеет такие ситуации корректно обрабатывать. Но к сожалению способов обхода я придумать не могу, если иметь ввиду действия в интерфейсе модуля ER. | 
|  | 
|  22.03.2023, 23:34 | #11 | 
| Участник | Цитата: В идеологии первых копателей-создателей ER собственно стояла идея что весь слой логики отчетов будет на стороне ER так как хотели/хотят сделать это отдельным сервисом. Поэтому полагаться на какие то метки и код из Ax концептуально -зло. | 
|  |