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