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