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

Как получить имя эл...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

получить имя перечисления(не синоним) как строку



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

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

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

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

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

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

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

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



   
ОтветитьЦитата