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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как получить имя элемента перечисления в 1С как строку?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #34403
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С