Получить значения перечисления по именам метаданных

Учебные задачи

Связываем техническое имя и синоним значения с реальным значением перечисления, пригодным для сравнения в коде.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.


Если Метаданные.Перечисления.Количество() = 0 Тогда
    ВызватьИсключение "В конфигурации нет перечислений";
КонецЕсли;
Описание = Метаданные.Перечисления.Получить(0);
Сообщить(СтрШаблон("Перечисление %1 (%2)", Описание.Имя, Описание.Синоним));
Сообщить(Описание.Комментарий);
Сообщить(Описание.ПолноеИмя());
Менеджер = Перечисления[Описание.Имя];
Для Каждого ОписаниеЗначения Из Описание.ЗначенияПеречисления Цикл
    Значение = Менеджер[ОписаниеЗначения.Имя];
    Сообщить(СтрШаблон("%1 (%2): представление %3; тип %4",
        ОписаниеЗначения.Имя, ОписаниеЗначения.Синоним, Значение, ТипЗнч(Значение)));
    Сообщить(ОписаниеЗначения.Комментарий);
КонецЦикла;
Сообщить(СтрШаблон("Описаний значений: %1", Описание.ЗначенияПеречисления.Количество()));

Разбор по шагам

  1. Берём существующее перечисление из текущей конфигурации; внешний текст не используется как имя объекта.

  2. Метаданные содержат технические имена и синонимы, а Перечисления[Имя] возвращает менеджер соответствующего перечисления.

  3. Доступ менеджера по имени значения даёт значение перечисления, не строку с подписью.

  4. ТипЗнч помогает увидеть различие между ПеречислениеСсылка и обычной Строкой.

Как проверить результат

  1. Число сообщений о значениях совпадает с количеством ЗначенияПеречисления.

  2. В Конфигураторе найдите выведенное перечисление: технические имена и синонимы совпадают.

  3. Синоним может содержать пробелы; код по-прежнему использует техническое Имя.

Ожидаемый результат

Получена таблица соответствия имён метаданных реальным значениям перечисления.

На что обратить внимание

  1. Нельзя сравнивать значение перечисления со строкой его синонима: совпадение подписи не делает типы одинаковыми.

  2. Не принимайте произвольные имена из API для динамического доступа. Используйте согласованный белый список обмена.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.