Как вывести и проанализировать структуру всех справочников в 1С:Предприятие 8.3

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

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

Способ 1. Использование штатного «Отчета по конфигурации»

Это самый быстрый и наглядный способ, который не требует написания кода. Он позволяет получить детальное описание всех объектов в удобном для чтения текстовом или табличном формате. Рассмотрим алгоритм действий:

  1. Откроем базу в режиме Конфигуратор.
  2. В главном меню выберем пункт Конфигурация, а затем — Отчет по конфигурации....
  3. В появившемся окне настройки выберем нужные нам объекты. Поскольку нас интересуют справочники, мы можем снять галочки со всех остальных веток и оставить только Справочники.
  4. Нажмем кнопку Настройка. Здесь можно уточнить, какие именно данные нам нужны: описания реквизитов, типы данных, состав табличных частей, формы или права доступа.
  5. Выберем способ вывода: в текстовый документ, в табличный документ или в формат HTML. Для последующего поиска по тексту лучше всего подходит Табличный документ.
  6. После нажатия кнопки Ок система сформирует подробную опись, которую можно сохранить в файл (например, в Excel) или распечатать.

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

Способ 2. Программное получение физической структуры хранения

Иногда требуется узнать не просто состав реквизитов, а то, как они называются «под капотом» — в базе данных SQL. Для этого в платформе 8.3 существует метод ПолучитьСтруктуруХраненияБазыДанных(). Рассмотрим на примере, как правильно его использовать в обработке.

Выясним причину, почему код автора из обсуждения не выводил результат. Просто вызвать функцию недостаточно, так как она возвращает ТаблицуЗначений, которую нужно отобразить пользователю. Разберем правильный пример реализации в серверной процедуре:


&НаСервере
Процедура ПолучитьИВывестиСтруктуруНаСервере()
    
    // Формируем массив имен метаданных, структуру которых хотим получить
    МассивИмен = Новый Массив;
    Для Каждого МетаСправочник Из Метаданные.Справочники Цикл
        МассивИмен.Добавить("Справочник." + МетаСправочник.Имя);
    КонецЦикла;
    
    // Получаем таблицу со структурой хранения
    ТаблицаСтруктуры = ПолучитьСтруктуруХраненияБазыДанных(МассивИмен);
    
    // Для вывода результата используем построитель отчета или выводим в ТабличныйДокумент
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаСтруктуры);
    Построитель.Выполнить();
    
    // Предположим, у нас на форме есть реквизит "Результат" с типом ТабличныйДокумент
    Построитель.Вывести(Объект.Результат);
    
КонецПроцедуры

Важно помнить: ПолучитьСтруктуруХраненияБазыДанных возвращает информацию о именах таблиц (например, _Reference45) и полей (_Description, _Code). Это полезно для администраторов баз данных или при написании прямых SQL-запросов, но для логического анализа структуры это может быть избыточным.

Способ 3. Обход коллекции метаданных (Логический анализ)

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

Рассмотрим пример кода, который перебирает все справочники и выводит их реквизиты:


Процедура ВывестиЛогическуюСтруктуру()
    
    Для Каждого СправочникИзМетаданных Из Метаданные.Справочники Цикл
        
        Сообщить("--- Справочник: " + СправочникИзМетаданных.Имя + " ---");
        
        // Анализируем стандартные реквизиты (Код, Наименование, Родитель и т.д.)
        Для Каждого СтандартныйРеквизит Из СправочникИзМетаданных.СтандартныеРеквизиты Цикл
            Сообщить("  [Стандартный] " + СтандартныйРеквизит.Имя + " (Тип: " + СтандартныйРеквизит.Тип + ")");
        КонецЦикла;
        
        // Анализируем дополнительные реквизиты, созданные разработчиком
        Для Каждого Реквизит Из СправочникИзМетаданных.Реквизиты Цикл
            Сообщить("  [Реквизит] " + Реквизит.Имя + " (Тип: " + Реквизит.Тип + ")");
        КонецЦикла;
        
        // Посмотрим на табличные части
        Для Каждого ТЧ Из СправочникИзМетаданных.ТабличныеЧасти Цикл
            Сообщить("  [ТабличнаяЧасть] " + ТЧ.Имя);
            Для Каждого РеквизитТЧ Из ТЧ.Реквизиты Цикл
                Сообщить("    - " + РеквизитТЧ.Имя + " (Тип: " + РеквизитТЧ.Тип + ")");
            КонецЦикла;
        КонецЦикла;
        
    КонецЦикла;
    
КонецПроцедуры

Этот метод позволяет увидеть связи между справочниками. Если в поле Тип вы видите СправочникСсылка.НазваниеДругогоСправочника, значит, между этими объектами установлена связь.

Способ 4. Современные инструменты: «Функции для технического специалиста»

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

  1. Убедимся, что у пользователя включены права на использование этого режима.
  2. Зайдем в главное меню (три полоски в левом верхнем углу) -> Сервис и настройки -> Функции для технического специалиста... (в старых версиях — «Все функции»).
  3. В открывшемся окне в самом низу развернем ветку Стандартные.
  4. Найдем пункт Управление конфигурацией или Просмотр метаданных.

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

Способ 5. Визуализация через Конструктор запросов и СКД

Если справочников действительно много и нужно увидеть «картину целиком», проанализируем ситуацию графически. Создадим фиктивный отчет на базе Схемы компоновки данных (СКД):

  1. Создадим новый отчет в конфигурации.
  2. Откроем Основную схему компоновки данных.
  3. Добавим Набор данных - запрос.
  4. Запустим Конструктор запроса.

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

Резюме и рекомендации

Подведем итоги выбора инструмента в зависимости от цели:

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

← На главную