Структура конфигурации 1С наружу: XML-файлы, отчёт, .cf и обработка

· 9 мин

Содержание

Чтобы выгрузить метаданные из 1С, откройте базу в конфигураторе и выберите Конфигурация → Выгрузить конфигурацию в файлы...: платформа сохранит все объекты (справочники, документы, регистры, формы, модули) в папку с XML-файлами. Для читаемого списка объектов с реквизитами подойдёт Конфигурация → Отчет по конфигурации..., а без открытия конфигуратора ту же выгрузку делает команда 1cv8.exe DESIGNER ... /DumpConfigToFiles.

Какой способ выбрать, зависит от цели. Для Git и сравнения версий нужен XML. Для аналитика или постановщика задачи хватит отчёта или списка из внешней обработки. Для переноса и резервной копии подходит обычный файл .cf. Всё ниже относится к платформе 8.3 и любой конфигурации: БП 3.0, ЗУП 3.1, УТ 11, ERP и самописным базам.

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

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

  • 🔑 Пользователь с правом открывать конфигуратор. Обычно это роль «Полные права» или «Администратор системы». Если в базе нет ни одного пользователя, конфигуратор открывается без пароля.
  • 📁 Путь к базе. Для файловой базы это папка с файлом 1Cv8.1CD, для клиент-серверной — строка вида Srvr1C\buh (имя сервера и имя базы в кластере).
  • 🧩 Версия платформы. Режим выгрузки в файлы есть во всех релизах 8.3. Инкрементальная выгрузка и формат каталогов зависят от релиза платформы: чем он новее, тем меньше сюрпризов.
  • 💾 Место на диске. Типовая БП 3.0 в XML занимает ориентировочно 1–2 ГБ и десятки тысяч файлов. Папку для выгрузки берите пустую и с коротким путём, например C:\dump\bp.
  • 🔒 Пароль на модули. Если часть модулей поставляется без исходных текстов, их код в выгрузку не попадёт: будет только структура объекта.

Монопольный режим для выгрузки не нужен. Пользователи могут работать в базе, пока вы выгружаете конфигурацию.

Сразу решите, что выгружать: основную конфигурацию (то, что открыто в дереве конфигуратора) или конфигурацию базы данных (то, с чем реально работают пользователи). Если в конфигураторе есть несохранённые изменения или изменения не применены к базе, это разные вещи.

Выгрузка метаданных в конфигураторе

Это самый понятный путь, когда нужно сделать выгрузку один-два раза.

XML-файлы: «Выгрузить конфигурацию в файлы»

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

В результате получится файл Configuration.xml с корневыми свойствами конфигурации и папки Catalogs, Documents, AccumulationRegisters, CommonModules и другие. Каждый объект — отдельный XML с реквизитами, табличными частями и типами, модули — файлы .bsl.

Отчёт по конфигурации

Если нужен не набор файлов, а один документ со списком объектов и реквизитов:

  1. В конфигураторе выберите Конфигурация → Отчет по конфигурации....
  2. Отметьте, что включить: свойства объектов, реквизиты, формы, модули. Модули сильно раздувают отчёт, для описания структуры их лучше выключить.
  3. Выберите вывод в текстовый документ или в табличный (.mxl) и сохраните результат.

Отчёт удобно отдавать аналитику или подрядчику: в нём видна вся иерархия, а в табличном варианте её можно сохранить в Excel.

Файл .cf

Конфигурация → Сохранить конфигурацию в файл... создаёт один бинарный .cf. Внутрь без конфигуратора не заглянуть, зато это полная копия структуры для переноса, сравнения через Конфигурация → Сравнить, объединить с конфигурацией из файла... или запуска на другой базе.

СпособЧто получитсяКогда выбирать
Выгрузить в файлыПапка XML + .bslGit, сравнение версий, поиск по тексту, разработка в EDT
Отчет по конфигурацииТекст или .mxlДокументация, ТЗ, передача аналитику
Сохранить в файл .cfОдин бинарный файлПеренос, резервная копия, сравнение в конфигураторе
Внешняя обработкаСвой формат: текст, CSV, JSONНужен конкретный срез метаданных

Выгрузка метаданных из командной строки 1cv8.exe

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

XML-выгрузка

Файловая база:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER ^
  /F "D:\Bases\Buh" /N "Администратор" /P "пароль" ^
  /DisableStartupDialogs ^
  /DumpConfigToFiles "C:\dump\buh" -Format Hierarchical ^
  /Out "C:\dump\log.txt"

Клиент-серверная база — вместо /F указывается /S:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER ^
  /S "Srvr1C\buh" /N "Администратор" /P "пароль" ^
  /DisableStartupDialogs ^
  /DumpConfigToFiles "C:\dump\buh" -Format Hierarchical ^
  /Out "C:\dump\log.txt"

Номер платформы в пути замените на свой: посмотреть его можно в папке C:\Program Files\1cv8.

Полезные ключи:

  • /Out — файл журнала. Без него пакетный режим молча завершается, и непонятно, была ли ошибка.
  • -Format Plain — плоский формат вместо иерархического.
  • -Extension ИмяРасширения или -AllExtensions — выгрузить расширения конфигурации . Без этих ключей выгружается только основная конфигурация.
  • -update — инкрементальная выгрузка: платформа сравнивает текущую конфигурацию с файлом ConfigDumpInfo.xml в папке и перезаписывает только изменённые объекты. На больших конфигурациях это минуты вместо получаса.

Файл .cf из командной строки

1cv8.exe DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" ^
  /DumpCfg "C:\dump\buh.cf" /Out "C:\dump\log.txt"

/DumpCfg сохраняет основную конфигурацию, /DumpDBCfg — конфигурацию базы данных. Различие то же, что в предупреждении выше.

Утилита ibcmd

В платформе 8.3 начиная с релизов 8.3.14 есть автономная утилита ibcmd. Она работает с базой напрямую, без запуска конфигуратора, и тоже умеет выгружать конфигурацию в XML через команду ibcmd infobase config export. Набор параметров подключения отличается для файловой и серверной базы и меняется от релиза к релизу, поэтому сверяйтесь со справкой самой утилиты: ibcmd help infobase config export.

Пароль в bat-файле лежит открытым текстом. Создайте для выгрузки отдельного пользователя с минимально нужными правами и закройте доступ к папке со скриптом.

Выгрузка структуры метаданных внешней обработкой

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

Создайте в конфигураторе внешнюю обработку (Файл → Новый → Внешняя обработка), добавьте форму, на форму — команду, и вставьте в модуль формы код:

&НаКлиенте
Процедура Выгрузить(Команда)
    ВыгрузитьНаСервере("C:\dump\metadata.txt");
    Сообщить("Готово");
КонецПроцедуры

&НаСервере
Процедура ВыгрузитьНаСервере(ИмяФайла)
    Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
    ВывестиКоллекцию(Запись, Метаданные.Справочники, "Справочник");
    ВывестиКоллекцию(Запись, Метаданные.Документы, "Документ");
    ВывестиКоллекцию(Запись, Метаданные.РегистрыСведений, "РегистрСведений");
    ВывестиКоллекцию(Запись, Метаданные.РегистрыНакопления, "РегистрНакопления");
    Запись.Закрыть();
КонецПроцедуры

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

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

Что ещё можно достать тем же способом:

  • 📑 Табличные части — Объект.ТабличныеЧасти, у каждой свои Реквизиты.
  • 📊 Измерения и ресурсы регистров — Объект.Измерения, Объект.Ресурсы.
  • 🗄️ Имена таблиц в СУБД — функция ПолучитьСтруктуруХраненияБазыДанных() возвращает таблицу соответствия объектов метаданных и таблиц хранения вроде _Reference35. Это главный приём, когда нужно понять, что лежит в конкретной таблице SQL или файла .1CD.

Для обмена с внешней системой формат JSON удобнее текста: тот же цикл, только строки пишутся через ЗаписьJSON.

Не путайте выгрузку метаданных с обработкой «Универсальная выгрузка/загрузка данных XML». Она выгружает данные (элементы справочников, документы), а не описание структуры.

Метаданные из хранилища конфигурации

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

В конфигураторе:

  1. Подключитесь к хранилищу: Конфигурация → Хранилище конфигурации → Подключиться к хранилищу....
  2. Откройте Конфигурация → Хранилище конфигурации → История хранилища....
  3. Выделите нужную версию и сохраните её в файл .cf командой в окне истории.
  4. Полученный .cf можно загрузить в пустую базу и уже из неё выгрузить XML.

Из командной строки:

1cv8.exe DESIGNER /F "D:\Bases\Empty" ^
  /ConfigurationRepositoryF "\\srv\repo\buh" ^
  /ConfigurationRepositoryN "user" /ConfigurationRepositoryP "pass" ^
  /ConfigurationRepositoryDumpCfg "C:\dump\buh_v120.cf" -v 120 ^
  /Out "C:\dump\log.txt"

Ключ -v задаёт номер версии хранилища. Без него сохраняется последняя версия . Отчёт об истории изменений между версиями даёт ключ /ConfigurationRepositoryReport.

Именно на хранилище построены инструменты синхронизации с Git: OneScript-утилита gitsync по очереди берёт версии хранилища, выгружает каждую в XML и делает коммит с автором и комментарием из истории.

Частые ошибки при выгрузке метаданных

Диагностика: выберите симптом

Ещё одна частая проблема — кириллица в пароле и имени пользователя внутри bat-файла. Сохраняйте файл в кодировке OEM 866 (ее использует консоль Windows) или переходите на PowerShell-скрипт в UTF-8. Иначе конфигуратор получит искажённый логин и вернёт ошибку аутентификации.

Автоматическая выгрузка метаданных по расписанию

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

Скрипт с датой в имени папки

@echo off
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set DST=C:\dump\buh
%V8% DESIGNER /F "D:\Bases\Buh" /N "Выгрузка" /P "пароль" ^
  /DisableStartupDialogs ^
  /DumpConfigToFiles "%DST%" -Format Hierarchical -update ^
  /Out "C:\dump\log_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.txt"

Папка одна и та же, а -update дописывает только изменения. Журнал копится по дням. Конструкция с %DATE% рассчитана на русский формат даты ДД.ММ.ГГГГ в Windows.

Планировщик заданий Windows

Создайте задание, которое раз в сутки запускает скрипт:

schtasks /Create /TN "1C dump buh" /TR "C:\scripts\dump_buh.bat" /SC DAILY /ST 03:00 /RU "DOMAIN\svc1c"

Запускайте задание от служебной учётной записи, у которой есть доступ к папке базы (для файловой) или к серверу 1С (для клиент-серверной).

Связка с Git

Если папка выгрузки — это репозиторий, добавьте в конец скрипта:

cd /d C:\dump\buh
git add -A
git commit -m "Выгрузка %DATE%"

Каждый день будет коммит только с изменёнными файлами. История git log по нужному объекту, например Documents/РеализацияТоваровУслуг, покажет, когда и что в нём менялось. Если коммита нет, значит, конфигурация за сутки не менялась.

Перед запуском выгрузки по расписанию
Выполнено: 0 / 5

Частые вопросы

Можно ли выгрузить метаданные без конфигуратора и без пароля администратора?
Список объектов можно получить внешней обработкой в режиме «Предприятие», если у пользователя есть право открывать внешние обработки. Полную XML-выгрузку без прав на конфигуратор не сделать.
Нужно ли выгонять пользователей из базы перед выгрузкой?
Нет. Выгрузка конфигурации в файлы и сохранение .cf не требуют монопольного режима, пользователи продолжают работать.
Чем XML-выгрузка отличается от файла .dt?
XML и .cf содержат только конфигурацию. Файл .dt (Администрирование → Выгрузить информационную базу в конфигураторе) содержит конфигурацию и все данные базы.
Можно ли загрузить XML обратно в базу?
Да, командой Конфигурация → Загрузить конфигурацию из файлов... или ключом /LoadConfigFromFiles. После загрузки нужно обновить конфигурацию базы данных, а это уже требует монопольного режима.
Подходит ли XML-выгрузка для 1С:EDT?
EDT импортирует XML-выгрузку конфигуратора и переводит её в свой формат проекта. Обратно из EDT тоже можно получить XML для загрузки в конфигуратор.