Как программно получить список всех обязательных для заполнения реквизитов справочников?

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

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

Алгоритм анализа обязательных реквизитов

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

Разберем процесс поэтапно:

  1. Создаем таблицу для хранения результатов, чтобы в дальнейшем выгрузить её в удобный формат (например, Excel или JSON).
  2. Инициируем цикл обхода коллекции Метаданные.Справочники.
  3. Для каждого найденного справочника последовательно обращаемся к коллекциям СтандартныеРеквизиты и Реквизиты.
  4. Проверяем значение свойства ПроверкаЗаполнения. Нас интересует значение Метаданные.СвойстваОбъектов.ПроверкаЗаполнения.ВыдаватьОшибку.

Пример реализации кода

Давайте посмотрим, как это выглядит на практике. Мы создадим таблицу значений и наполним её данными о проблемных (обязательных) полях.


// Создаем таблицу для хранения данных
ТаблицаРеквизитов = Новый ТаблицаЗначений;
ТаблицаРеквизитов.Колонки.Добавить("Справочник");
ТаблицаРеквизитов.Колонки.Добавить("ИмяРеквизита");
ТаблицаРеквизитов.Колонки.Добавить("Синоним");

// Перебираем все справочники
Для Каждого СправочникМетаданные Из Метаданные.Справочники Цикл
    
    // Проверяем стандартные реквизиты
    Для Каждого Реквизит Из СправочникМетаданные.СтандартныеРеквизиты Цикл
        Если Реквизит.ПроверкаЗаполнения = Метаданные.СвойстваОбъектов.ПроверкаЗаполнения.ВыдаватьОшибку Тогда
            Строка = ТаблицаРеквизитов.Добавить();
            Строка.Справочник = СправочникМетаданные.Имя;
            Строка.ИмяРеквизита = Реквизит.Имя;
            Строка.Синоним = Реквизит.Синоним;
        КонецЕсли;
    КонецЦикла;
    
    // Проверяем пользовательские реквизиты
    Для Каждого Реквизит Из СправочникМетаданные.Реквизиты Цикл
        Если Реквизит.ПроверкаЗаполнения = Метаданные.СвойстваОбъектов.ПроверкаЗаполнения.ВыдаватьОшибку Тогда
            Строка = ТаблицаРеквизитов.Добавить();
            Строка.Справочник = СправочникМетаданные.Имя;
            Строка.ИмяРеквизита = Реквизит.Имя;
            Строка.Синоним = Реквизит.Синоним;
        КонецЕсли;
    КонецЦикла;

КонецЦикла;

Важные нюансы при работе с метаданными

При выполнении анализа учитывайте следующие особенности, которые помогут сделать отчет более качественным:

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

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

Функциональные опции: Важно понимать, что программный анализ метаданных покажет все реквизиты, для которых установлено свойство ПроверкаЗаполнения, вне зависимости от того, включены ли в данный момент ФункциональныеОпции, скрывающие эти реквизиты в интерфейсе пользователя. Если реквизит скрыт опцией, система 1С технически не будет требовать его заполнения при записи объекта, даже если в метаданных стоит флаг проверки. Будьте внимательны при интерпретации данных, если в вашей конфигурации активно используются функциональные опции.

Визуализация: Для удобства пользователей рекомендуется выводить Синоним, а не только техническое Имя. Это значительно упрощает коммуникацию с бизнес-заказчиками, которые будут проверять полученный отчет.

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

← На главную