Структура конфигурации 1С наружу: XML-файлы, отчёт, .cf и обработка
Содержание
Чтобы выгрузить метаданные из 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С, выберите базу и нажмите
Конфигуратор. - Откройте дерево:
Конфигурация → Открыть конфигурацию. - Выберите
Конфигурация → Выгрузить конфигурацию в файлы.... - Укажите пустую папку и формат: иерархический (каталоги по типам объектов) или плоский (все файлы в одной папке). Для Git и чтения глазами удобнее иерархический.
- Нажмите
Выгрузитьи дождитесь сообщения в окне служебных сообщений.
В результате получится файл Configuration.xml с корневыми свойствами конфигурации и папки Catalogs, Documents, AccumulationRegisters, CommonModules и другие. Каждый объект — отдельный XML с реквизитами, табличными частями и типами, модули — файлы .bsl.
Отчёт по конфигурации
Если нужен не набор файлов, а один документ со списком объектов и реквизитов:
- В конфигураторе выберите
Конфигурация → Отчет по конфигурации.... - Отметьте, что включить: свойства объектов, реквизиты, формы, модули. Модули сильно раздувают отчёт, для описания структуры их лучше выключить.
- Выберите вывод в текстовый документ или в табличный (
.mxl) и сохраните результат.
Отчёт удобно отдавать аналитику или подрядчику: в нём видна вся иерархия, а в табличном варианте её можно сохранить в Excel.
Файл .cf
Конфигурация → Сохранить конфигурацию в файл... создаёт один бинарный .cf. Внутрь без конфигуратора не заглянуть, зато это полная копия структуры для переноса, сравнения через Конфигурация → Сравнить, объединить с конфигурацией из файла... или запуска на другой базе.
| Способ | Что получится | Когда выбирать |
|---|---|---|
| Выгрузить в файлы | Папка XML + .bsl | Git, сравнение версий, поиск по тексту, разработка в 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». Она выгружает данные (элементы справочников, документы), а не описание структуры.
Метаданные из хранилища конфигурации
Если конфигурация на поддержке в хранилище, метаданные любой сохранённой версии можно получить, не трогая рабочую базу.
В конфигураторе:
- Подключитесь к хранилищу:
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу.... - Откройте
Конфигурация → Хранилище конфигурации → История хранилища.... - Выделите нужную версию и сохраните её в файл
.cfкомандой в окне истории. - Полученный
.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/РеализацияТоваровУслуг, покажет, когда и что в нём менялось. Если коммита нет, значит, конфигурация за сутки не менялась.
Частые вопросы
Можно ли выгрузить метаданные без конфигуратора и без пароля администратора?
Нужно ли выгонять пользователей из базы перед выгрузкой?
Чем XML-выгрузка отличается от файла .dt?
Администрирование → Выгрузить информационную базу в конфигураторе) содержит конфигурацию и все данные базы.Можно ли загрузить XML обратно в базу?
Конфигурация → Загрузить конфигурацию из файлов... или ключом /LoadConfigFromFiles. После загрузки нужно обновить конфигурацию базы данных, а это уже требует монопольного режима.