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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки на платформе 1С:Предприятие часто возникает необходимость получить не синоним (то, что видит пользователь), а именно системное имя (идентификатор), заданное в конфигураторе. Рассмотрим основные способы решения этой задачи, чтобы вы могли выбрать наиболее подходящий для вашего случая.

Способ 1: Использование метаданных объекта

Этот метод считается наиболее профессиональным и надежным, так как он напрямую обращается к структуре конфигурации. Суть метода заключается в нахождении индекса перечисления в коллекции и извлечении свойства Имя из объекта Метаданные.

Разберем процесс по шагам:

  1. Получаем объект метаданных через свойство ссылки Метаданные.
  2. Используем менеджер перечисления для получения индекса конкретного значения.
  3. Извлекаем имя из коллекции ЗначенияПеречисления по полученному индексу.

Давайте посмотрим на готовый пример реализации данной логики в виде функции:


Процедура ДобавитьВСписокПеречисление(Список, ЗначениеПеречисления)
    МетаданныеПеречисления = ЗначениеПеречисления.Метаданные();
    ИндексЗначения = Перечисления[МетаданныеПеречисления.Имя].Индекс(ЗначениеПеречисления);
    ЗначениеМетаданных = МетаданныеПеречисления.ЗначенияПеречисления[ИндексЗначения];
    Имя = ЗначениеМетаданных.Имя;
    Синоним = ЗначениеМетаданных.Синоним;
    Список.Добавить(Имя, Синоним);
КонецПроцедуры

Этот подход работает стабильно даже в сложных архитектурах. Если вы работаете через COM-соединение, помните об области видимости: необходимо корректно обращаться к менеджеру перечислений через корневой объект COM-соединения, как показано ниже:


Индекс = v83.Перечисления.СтавкиНДС.Индекс(Ставка_в_виде_СОМ_Объекта);
НаименованиеСтавки = v83.Метаданные.Перечисления.СтавкиНДС.ЗначенияПеречисления.Получить(Индекс).Имя;

Способ 2: Использование функции XMLСтрока()

Если вам нужно максимально быстрое и лаконичное решение, можно воспользоваться функцией XMLСтрока(). Она преобразует значение перечисления в строковый формат, который выглядит как ИмяПеречисления.ИмяЗначения.

Рассмотрим применение:


// Предположим, у нас есть переменная СсылкаНаПеречисление
ИмяЗначения = XMLСтрока(СсылкаНаПеречисление);
// Результат будет строкой вида: Перечисление.ВидыОперацийРКО.ОплатаПоставщику

Этот способ крайне удобен для быстрой отладки или написания коротких обработок. Однако учтите, что если вам нужно получить только вторую часть строки (имя самого значения), потребуется дополнительно обработать полученную строку, например, с помощью функции СтрРазделить() или СтрНайти().

Что выбрать для работы?

Мы проанализировали оба метода. Подведем итоги:

Теперь вы знаете, как извлечь идентификатор перечисления в любой ситуации. Применяйте эти инструменты в зависимости от контекста вашей задачи, и разработка станет еще проще!

← На главную