Выгрузка конфигурации 1С в XML-файлы: зачем и как сделать
Содержание
Частая путаница: выгрузку в файлы принимают за резервную копию. Это не она. Файл .dt хранит и конфигурацию, и данные. Выгрузить конфигурацию в файлы 1С значит разложить только программный код и метаданные на каталоги с .xml, .bsl и другими файлами. Данных базы в них нет.
Зачем это нужно, если есть .cf? Каталог с текстовыми файлами можно открыть в любом редакторе, сравнить две версии построчно и положить в Git. Двоичный .cf так не сравнишь. Ниже: что внутри, как выгрузить из Конфигуратора и из командной строки, как загрузить обратно и что чаще всего ломается.
Что такое выгрузка конфигурации в файлы
Конфигуратор умеет сохранить конфигурацию
в виде дерева каталогов. Каждый объект метаданных получает свой XML-файл, а модули лежат отдельными текстовыми файлами .bsl. Макеты, формы, картинки и справка тоже становятся отдельными файлами.
Структура примерно такая:
Configuration.xml— корневое описание конфигурации;ConfigDumpInfo.xml— служебный файл с версиями объектов, нужен для частичной выгрузки и загрузки;- каталоги по видам объектов:
Catalogs,Documents,CommonModules,Reportsи так далее; - внутри каталога объекта: его XML, подкаталог
Extс модулями и подкаталогFormsс формами.
Что в выгрузку не попадает:
- 📌 данные информационной базы: документы, остатки, записи справочников;
- 📌 пользователи и их пароли;
- 📌 журнал регистрации и настройки кластера.
Это именно исходники. Из них можно собрать конфигурацию заново, но базу с данными они не заменят.
Зачем разработчику файловая выгрузка
Основная причина — работа с версиями. Пока конфигурация лежит внутри базы, понять, кто и что изменил, трудно. В файлах это видно сразу.
Что вы получаете:
- ✅ Git и история изменений. Каждая правка модуля — отдельный коммит с автором и комментарием. Откат одной процедуры занимает секунды.
- ✅ Сравнение и слияние. Две ветки разработки сливаются обычными средствами Git, а не вручную через «Сравнить, объединить».
- ✅ Поиск по всему коду.
grepили поиск в редакторе по тысячам модулей работает быстрее, чем «Поиск по тексту» в Конфигураторе. - ✅ Код-ревью. Изменения смотрят в обычном интерфейсе репозитория, до попадания в рабочую базу.
- ✅ Автоматизация. Сборка конфигурации из исходников на сервере, проверка перед публикацией, выкладка по расписанию.
- ✅ Страховка от потери. Если хранилище конфигурации или база повреждены, исходники в репозитории остаются.
Обновление поставщика тоже можно разложить в файлы: выгрузили версию до обновления, выгрузили после и посмотрели git diff. Сразу видно, какие процедуры типовая конфигурация поменяла и что из вашей доработки может сломаться.
Для обычного бухгалтера, который не дорабатывает конфигурацию, выгрузка в файлы не нужна. Для резервной копии берите выгрузку информационной базы в .dt.
Выгрузка из Конфигуратора: пошагово
Выгрузку делают из Конфигуратора. Пользователь должен иметь право на запуск Конфигуратора, то есть роль администратора или права разработчика.
- Запустите 1С:Предприятие в режиме Конфигуратор (в окне запуска выберите базу и нажмите «Конфигуратор»).
- Откройте конфигурацию базы. Если окно дерева метаданных пустое, выберите
Конфигурация → Открыть конфигурацию. - В меню выберите
Конфигурация → Выгрузить конфигурацию в файлы…. - В диалоге укажите пустой каталог. Лучше заранее создать отдельную папку, например
D:\src\buh, и не писать в корень диска. - Нажмите «Выбор каталога» и дождитесь окончания. Для типовой «Бухгалтерии предприятия» выгрузка занимает от нескольких минут, результат — десятки тысяч файлов.
После этого в каталоге появятся Configuration.xml, ConfigDumpInfo.xml и папки объектов.
Если каталог не пуст, лишние файлы там останутся, и позже вы можете принять их за часть конфигурации. Для чистой выгрузки каталог должен быть пустым.
Что выбрать: хранилище или базу
Если конфигурация подключена к хранилищу, выгружайте из базы, в которую уже получена нужная версия. Файлы всегда отражают то, что сейчас открыто в Конфигураторе, включая локальные несохранённые в хранилище правки. Поэтому перед выгрузкой «для репозитория» обновите конфигурацию из хранилища или зафиксируйте свои изменения.
Расширения
Расширение конфигурации
выгружается отдельно. В режиме Конфигуратора откройте Конфигурация → Расширения конфигурации, выберите нужное расширение и выгрузите его в файлы через команду на панели списка расширений. Для командной строки есть параметр -Extension, о нём ниже.
Выгрузка через командную строку
Для автоматизации Конфигуратор запускают в пакетном режиме. Это нужно, если выгрузка идёт по расписанию или из скрипта сборки.
"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER /F "D:\bases\buh" /N "Админ" /P "" /DumpConfigToFiles "D:\src\buh" /Out "D:\src\dump.log"
Расшифровка ключей:
| Ключ | Что делает |
|---|---|
DESIGNER | запуск в режиме Конфигуратора |
/F | путь к файловой базе (для серверной — /S сервер\база) |
/N, /P | имя пользователя и пароль |
/DumpConfigToFiles | выгрузка конфигурации в каталог |
/Out | файл журнала результата |
Номер платформы в пути подставьте свой, он у каждой установки разный. Если оставить /Out, результат работы можно проверить после выполнения: при ошибке в журнале будет текст причины.
Полезные параметры выгрузки, в которых можно быть уверенным:
-Format Hierarchicalи-Format Plain— иерархическая или плоская структура файлов. Иерархическая (по умолчанию) удобнее для чтения и Git.-Extension <имя>— выгрузить указанное расширение, а не основную конфигурацию.-update— обновить уже существующую выгрузку, записав только изменённые объекты.
Полный список параметров вашей версии смотрите в справке платформы по запуску Конфигуратора из командной строки.
Для серверной базы с кластером указывайте /S, для файловой — /F. Если пароль не пустой, его не стоит оставлять в скрипте в открытом виде: используйте переменную среды или защищённое хранилище в вашей системе сборки.
Частичная выгрузка
Полная выгрузка крупной конфигурации тянется долго. Когда в каталоге уже есть ConfigDumpInfo.xml, повторная выгрузка с -update пересоздаёт только то, что изменилось с прошлого раза. Это сокращает время в разы и не засоряет коммит лишними изменениями дат в файлах.
Git и раздельное хранение: как организовать репозиторий
Выгруженный каталог — это готовая рабочая копия репозитория.
- Создайте репозиторий в каталоге выгрузки:
git init. - Добавьте
.gitignore. Исключите всё, что генерирует среда, а не вы: логи, временные файлы, каталоги других программ. - Сделайте первый коммит с чистой версией «как у поставщика». Это ваша точка отсчёта.
- Доработки делайте в отдельной ветке и коммитьте после каждого завершённого изменения.
Раздельное хранение удобно строить так:
| Что хранить | Где | Зачем |
|---|---|---|
| Типовая конфигурация поставщика | ветка vendor | чистая база для сравнения при обновлении |
| Ваши доработки | ветка main или develop | рабочая версия |
| Расширения | отдельный репозиторий или каталог | независимая история |
Когда выходит новый релиз поставщика, вы выгружаете его в ветку vendor, коммитите и сливаете в основную ветку. Git покажет конфликты только там, где вы и поставщик правили одно и то же место.
Следите за кодировкой и концами строк. Выгрузка платформы записывает файлы в UTF-8 с BOM. Если редактор или git переписывает кодировку, в следующей загрузке получите ошибку чтения. Отключите автоматическое преобразование концов строк для каталога конфигурации.
Что не стоит класть в тот же репозиторий: резервные копии баз, .dt, большие бинарные файлы и логи.
Возврат из файлов в базу: загрузка конфигурации
Обратная операция — Конфигурация → Загрузить конфигурацию из файлов…. Работает она зеркально:
- Откройте Конфигуратор той базы, куда нужно загрузить исходники.
- Выберите
Конфигурация → Загрузить конфигурацию из файлов…. - Укажите каталог, в котором лежит
Configuration.xml. - Подтвердите замену. Конфигурация базы будет полностью заменена содержимым каталога.
- Примените изменения к базе данных:
Конфигурация → Обновить конфигурацию базы данных(клавишаF7).
Командная строка:
"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER /F "D:\bases\buh" /N "Админ" /P "" /LoadConfigFromFiles "D:\src\buh" /UpdateDBCfg /Out "D:\src\load.log"
Ключ /UpdateDBCfg сразу применяет изменения к структуре базы. Без него загруженная конфигурация останется в основной, но база данных обновлена не будет, и при входе пользователи увидят сообщение о несоответствии.
Для частичной загрузки в ключе /LoadConfigFromFiles есть параметры -files (список файлов) и -listFile (файл со списком). Они загружают только перечисленные объекты, а не всю конфигурацию.
⚠️ Загрузка из файлов заменяет конфигурацию целиком. Перед первой загрузкой в рабочую базу сохраните текущую конфигурацию в .cf и сделайте выгрузку базы в .dt.
Для обновления структуры базы нужен монопольный доступ: все пользователи должны выйти. Заранее предупредите людей и не запускайте загрузку в рабочее время.
.cf и подключите его к нужной базе. Затем обновите конфигурацию базы данных.git diff..dt.Частые ошибки при выгрузке и загрузке
Ошибок немного, и почти все сводятся к трём причинам: неподходящий каталог, нехватка прав и порча файлов.
Выгрузка не запускается или обрывается
- Каталог не пуст или защищён от записи — выберите другую папку.
- Не хватает места: типовая конфигурация даёт сотни мегабайт XML и BSL, закладывайте запас в несколько гигабайт.
- Длинные пути. Вложенность объектов с именами на русском даёт пути больше 260 символов. Выгружайте в короткий путь вроде
D:\src\x. - Не хватает прав у пользователя или неверен путь к базе. Причину ищите в файле
/Out.
Загрузка ругается на формат
- В XML вручную правили служебные идентификаторы или структуру. Платформа строго проверяет схему файлов.
- Редактор сохранил файл в другой кодировке или потерял BOM.
- В каталоге остались файлы удалённых объектов: после ручного удаления объекта уберите его и из
Configuration.xml, иначе будет ссылка на несуществующий элемент.
База не стартует после загрузки
Загрузка в Конфигураторе не равна обновлению базы данных. Выполните F7 или добавьте /UpdateDBCfg в команду. Если появилось сообщение об ошибках в структуре, чаще всего виноваты ссылки на объекты, которых нет в загруженной конфигурации.
F7 в Конфигураторе при монопольном доступе.Частые вопросы
Чем выгрузка в файлы отличается от сохранения в `.cf`?
.cf — один двоичный файл конфигурации. Выгрузка в файлы — дерево текстовых файлов, которое читается человеком и хорошо работает с Git.Попадают ли в выгрузку данные и пользователи базы?
.dt.