База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как получить имя элемента перечисления в 1С как строку? › RE: Как получить имя элемента перечисления в 1С как строку?
Чтобы получить имя элемента перечисления (то есть именно имя, а не синоним) в виде строки в 1С, если у вас есть значение перечисления, можно использовать следующий подход:
|
1 2 3 4 5 6 7 8 9 10 11 |
Функция ПолучитьИмяЭлементаПеречисленияПоЗначению(ЗначениеПеречисления) Экспорт ИмяЭлемента = Строка(ЗначениеПеречисления); ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя; Для каждого ЭлементПеречисления Из Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления Цикл Если ЭлементПеречисления.Синоним = Строка(ЗначениеПеречисления) Тогда ИмяЭлемента = ЭлементПеречисления.Имя; Прервать; КонецЕсли; КонецЦикла; Возврат ИмяЭлемента; КонецФункции |
Пример использования:
|
1 2 3 |
ПеречислениеЗначение = Перечисления.СтатусЗаказа.Принят; ИмяЭлемента = ПолучитьИмяЭлементаПеречисленияПоЗначению(ПеречислениеЗначение); Сообщить(ИмяЭлемента); // Выведет "Принят" |
Объяснение:
— ЗначениеПеречисления.Метаданные().Имя — получает имя самого перечисления.
— Через метаданные перебираются все элементы перечисления.
— Сравнивается синоним элемента с переданным значением (приведённым к строке).
— Если совпадение найдено, возвращается имя элемента.
Если у вас уже есть ссылка на элемент перечисления, можно получить имя напрямую так:
|
1 |
ИмяЭлемента = ЗначениеПеречисления.Метаданные().ЗначенияПеречисления[ЗначениеПеречисления].Имя; |
Или через менеджер перечисления:
|
1 2 3 |
ИмяМетаданных = ЗначениеПеречисления.Метаданные().Имя; Менеджер = Новый ("ПеречислениеМенеджер." + ИмяМетаданных); ИмяЭлемента = ЗначениеПеречисления.Метаданные().ЗначенияПеречисления[Менеджер.Индекс(ЗначениеПеречисления)].Имя; |
Рекомендую посмотреть здесь: https://helpf.pro/faq8/view/85.html