ОбъектМетаданных: Перечисление.Комментарий

Свойства · Comment

Тип: Строка. Произвольная строка символов. Как правило, расшифровывает и поясняет имя объекта метаданных.

Полное описание, параметры и ограничения

ОбъектМетаданных: Перечисление.Комментарий (MetadataObject: Enum.Comment)

ОбъектМетаданных: Перечисление (MetadataObject: Enum)

Комментарий (Comment)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: Строка.
Произвольная строка символов. Как правило, расшифровывает и поясняет имя объекта метаданных.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Сравнить происхождение опции, параметра, подсистемы, типа и перечисления

Проверяем базовые описания пяти разных видов. Принадлежность и расширение описывают схему, не значение настройки или бизнес-запись.

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

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

Подготовка

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

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

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

  5. Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.

Опция = Метаданные.ФункциональныеОпции.Найти("ИспользоватьЗаказыКлиентов");
Если Опция = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует ФункциональныеОпции.ИспользоватьЗаказыКлиентов";
КонецЕсли;
Параметр = Метаданные.ПараметрыФункциональныхОпций.Найти("Организация");
Если Параметр = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует ПараметрыФункциональныхОпций.Организация";
КонецЕсли;
Подсистема = Метаданные.Подсистемы.Найти("БанкИКассаБазовая");
Если Подсистема = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует Подсистемы.БанкИКассаБазовая";
КонецЕсли;
ОпределяемыйТип = Метаданные.ОпределяемыеТипы.Найти("Артикул");
Если ОпределяемыйТип = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует ОпределяемыеТипы.Артикул";
КонецЕсли;
Перечисление = Метаданные.Перечисления.Найти("АмортизационныеГруппы");
Если Перечисление = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует Перечисления.АмортизационныеГруппы";
КонецЕсли;
Объекты = Новый Массив;
Объекты.Добавить(Опция);
Объекты.Добавить(Параметр);
Объекты.Добавить(Подсистема);
Объекты.Добавить(ОпределяемыйТип);
Объекты.Добавить(Перечисление);
Для Каждого Описание Из Объекты Цикл
    Сообщить(СтрШаблон("%1 (%2): %3", Описание.Имя, Описание.Синоним, Описание.ПолноеИмя()));
    Сообщить(Описание.Представление());
    Сообщить("Комментарий: " + Описание.Комментарий);
    Сообщить(Описание.Родитель() = Метаданные);
    Сообщить(Описание.ПринадлежностьОбъекта);
    Сообщить(Описание.ОбъектРасширяемойКонфигурации);
    Сообщить("Изменён расширениями: " + Строка(Описание.ЕстьИзмененияРасширениямиКонфигурации()));
    Расширение = Описание.РасширениеКонфигурации();
    Если Расширение = Неопределено Тогда
        Сообщить("Добавившее расширение не получено");
    Иначе
        Сообщить("Добавившее расширение: " + Расширение.Имя);
    КонецЕсли;
КонецЦикла;

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

  1. Получаем пять конкретных корневых описаний, проверяя каждый поиск.

  2. ПолноеИмя различает вид объекта; Синоним, Представление и Комментарий нужны человеку.

  3. Все выбранные объекты корневые, поэтому сравниваем их родителя с Метаданные; не распространяем это на вложенную подсистему или значение перечисления.

  4. Не меняем расширения и не смешиваем добавление объекта с изменением уже существующего.

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

  1. Вывод содержит пять блоков, а пять сравнений родителя — Истина.

  2. Без добавившего расширения его Имя не читается; версия конфигурации и настройки остаются прежними.

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

Разобран единый контракт происхождения разных корневых описаний.

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

  1. Наличие изменений расширением не доказывает конфликт или ошибку.

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

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

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

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

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

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

Подготовка

  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С» и не аффилирован с ней.