Как получить структуру метаданных в 1С: реквизиты, табличные части и типы данных

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

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

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

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

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

Выполним следующие шаги:

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

Платформа сформирует подробный текстовый отчет, содержащий имена реквизитов, их синонимы, типы данных, длину, точность и структуру всех табличных частей. Полученный отчет мы можем легко сохранить в текстовый файл, документ HTML или скопировать напрямую в MS Word или Excel для дальнейшей работы.

Способ 2. Выгрузка конфигурации в файлы XML (для платформы 8.3)

Современные версии платформы 1С 8.3 предоставляют мощный штатный механизм для декомпозиции конфигурации. Выгрузив конфигурацию в файлы, мы получаем полное текстовое представление структуры всех объектов в формате XML.

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

  1. В Конфигураторе откроем меню Конфигурация и выберем команду Выгрузить конфигурацию в файлы....
  2. Укажем пустую локальную папку на диске, куда будут сохранены файлы.
  3. Платформа создаст упорядоченную структуру каталогов. Перейдем в созданную папку.
  4. Структура интересующих нас объектов будет лежать в соответствующих подпапках: документы в папке Documents, справочники в Catalogs, регистры в InformationRegisters или AccumulationRegisters.
  5. Найдем файл нужного объекта, например, Document.ПоступлениеТоваровУслуг.xml.

Этот файл можно открыть в любом текстовом редакторе (например, Notepad++, VS Code) или интернет-браузере. Внутри XML-структуры вы увидите четкие теги <Attributes> (Реквизиты) и <TabularSections> (Табличные части), содержащие полные описания типов данных, включая ограничения по длине строк, допустимые типы для составных данных и связи.

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

Способ 3. Универсальный программный скрипт на встроенном языке 1С

Когда требуется автоматизировать получение структуры «на лету» в режиме «1С:Предприятие» (например, для динамического анализа или выгрузки в файлы обмена), жесткое прописание путей к метаданным нецелесообразно. Намного эффективнее написать универсальный алгоритм, который обойдет метаданные любого переданного объекта.

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


Процедура ПолучитьСтруктуруОбъекта(ПолноеИмяОбъекта, ПутьКФайлу) Экспорт

    ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта);
    
    Если ОбъектМетаданных = Неопределено Тогда
        ВызватьИсключение "Объект метаданных с именем " + ПолноеИмяОбъекта + " не найден!";
    КонецЕсли;

    Текст = Новый ТекстовыйДокумент;
    Текст.ДобавитьСтроку("==================================================");
    Текст.ДобавитьСтроку("СТРУКТУРА ОБЪЕКТА: " + ОбъектМетаданных.ПолноеИмя());
    Текст.ДобавитьСтроку("Синоним: " + ОбъектМетаданных.Синоним);
    Текст.ДобавитьСтроку("==================================================");
    Текст.ДобавитьСтроку("");

    // 1. Обход стандартных реквизитов (Код, Наименование, Ссылка, Проведен, ПометкаУдаления и др.)
    Текст.ДобавитьСтроку("--- СТАНДАРТНЫЕ РЕКВИЗИТЫ ---");
    Для Каждого СтандартныйРеквизит Из ОбъектМетаданных.СтандартныеРеквизиты Цикл
        Текст.ДобавитьСтроку(СтандартныйРеквизит.Имя + " | Тип: " + Строка(СтандартныйРеквизит.Тип));
    КонецЦикла;
    Текст.ДобавитьСтроку("");

    // 2. Обход собственных реквизитов объекта
    Текст.ДобавитьСтроку("--- РЕКВИЗИТЫ ОБЪЕКТА ---");
    Для Каждого Реквизит Из ОбъектМетаданных.Реквизиты Цикл
        Текст.ДобавитьСтроку(Реквизит.Имя + " | Синоним: " + Реквизит.Синоним + " | Тип: " + Строка(Реквизит.Тип));
    КонецЦикла;
    Текст.ДобавитьСтроку("");

    // 3. Обход табличных частей и их реквизитов
    Текст.ДобавитьСтроку("--- ТАБЛИЧНЫЕ ЧАСТИ ---");
    Для Каждого ТабличнаяЧасть Из ОбъектМетаданных.ТабличныеЧасти Цикл
        Текст.ДобавитьСтроку("Табличная часть: " + ТабличнаяЧасть.Имя + " (" + ТабличнаяЧасть.Синоним + ")");
        
        Для Каждого РеквизитТЧ Из ТабличнаяЧасть.Реквизиты Цикл
            Текст.ДобавитьСтроку("   - " + РеквизитТЧ.Имя + " | Тип: " + Строка(РеквизитТЧ.Тип));
        КонецЦикла;
        Текст.ДобавитьСтроку("");
    КонецЦикла;

    Попытка
        Текст.Записать(ПутьКФайлу, КодировкаТекста.UTF8);
        Сообщить("Структура успешно сохранена в файл: " + ПутьКФайлу);
    Исключение
        Сообщить("Ошибка при записи файла: " + ОписаниеОшибки(), СтатусСообщения.Важное);
    КонецПопытки;

КонецПроцедуры

Для вызова этой процедуры достаточно передать ей параметры, например:

ПолучитьСтруктуруОбъекта("Документ.ПоступлениеТоваровУслуг", "C:\temp\structure_document.txt");

Если вам требуется представить структуру в красивом табличном виде, мы можем модифицировать этот код, чтобы вместо ТекстовыйДокумент использовать ТабличныйДокумент, заполнить ячейки и сохранить результат в формате Excel (файлы с расширением XLSX).

Способ 4. Специализированные обработки выгрузки метаданных (MD83Exp.epf)

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

Выясним, как с ними работать:

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

Способ 5. Использование среды разработки 1С:Enterprise Development Tools (EDT)

Если ваша команда использует современную среду разработки 1C:EDT на базе Eclipse вместо классического Конфигуратора, задача по получению структуры решается автоматически.

В EDT вся конфигурация изначально хранится на диске компьютера разработчика в виде файлов проекта, синхронизированных с Git. Вам не нужно выполнять операции экспорта. Достаточно открыть локальный каталог проекта в проводнике или вашей IDE, перейти к нужному XML-файлу описания метаданных объекта и скопировать его структуру. Это существенно ускоряет процессы командной разработки и непрерывной интеграции (CI/CD).

Мы рассмотрели различные варианты получения структуры метаданных в 1С. Выберите тот, который оптимально подходит под ваши текущие задачи: интерактивный отчет для быстрой справки, XML-декомпозицию для анализа файлов или гибкий программный скрипт для автоматизации рутины.

← На главную