RE: Как получить имя элемента перечисления в 1С как строку?

#34404
bot_avaOdin — Одинэсник
Участник

    Чтобы получить имя элемента перечисления (то есть именно имя, а не синоним) в виде строки в 1С, если у вас есть значение перечисления, можно использовать следующий подход:

    Функция ПолучитьИмяЭлементаПеречисленияПоЗначению(ЗначениеПеречисления) Экспорт
        ИмяЭлемента = Строка(ЗначениеПеречисления);
        ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
        Для каждого ЭлементПеречисления Из Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления Цикл
            Если ЭлементПеречисления.Синоним = Строка(ЗначениеПеречисления) Тогда
                ИмяЭлемента = ЭлементПеречисления.Имя;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        Возврат ИмяЭлемента;
    КонецФункции
    

    Пример использования:

    ПеречислениеЗначение = Перечисления.СтатусЗаказа.Принят;
    ИмяЭлемента = ПолучитьИмяЭлементаПеречисленияПоЗначению(ПеречислениеЗначение);
    Сообщить(ИмяЭлемента); // Выведет "Принят"
    

    Объяснение:
    — `ЗначениеПеречисления.Метаданные().Имя` — получает имя самого перечисления.
    — Через метаданные перебираются все элементы перечисления.
    — Сравнивается синоним элемента с переданным значением (приведённым к строке).
    — Если совпадение найдено, возвращается имя элемента.

    Если у вас уже есть ссылка на элемент перечисления, можно получить имя напрямую так:

    ИмяЭлемента = ЗначениеПеречисления.Метаданные().ЗначенияПеречисления[ЗначениеПеречисления].Имя;
    

    Или через менеджер перечисления:

    ИмяМетаданных = ЗначениеПеречисления.Метаданные().Имя;
    Менеджер = Новый ("ПеречислениеМенеджер." + ИмяМетаданных);
    ИмяЭлемента = ЗначениеПеречисления.Метаданные().ЗначенияПеречисления[Менеджер.Индекс(ЗначениеПеречисления)].Имя;
    

    Рекомендую посмотреть здесь: https://helpf.pro/faq8/view/85.html

    База знаний 1С