Выгрузка конфигурации 1С в XML-файлы: зачем и как сделать

· 9 мин

Содержание

Частая путаница: выгрузку в файлы принимают за резервную копию. Это не она. Файл .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. Запустите 1С:Предприятие в режиме Конфигуратор (в окне запуска выберите базу и нажмите «Конфигуратор»).
  2. Откройте конфигурацию базы. Если окно дерева метаданных пустое, выберите Конфигурация → Открыть конфигурацию.
  3. В меню выберите Конфигурация → Выгрузить конфигурацию в файлы….
  4. В диалоге укажите пустой каталог. Лучше заранее создать отдельную папку, например D:\src\buh, и не писать в корень диска.
  5. Нажмите «Выбор каталога» и дождитесь окончания. Для типовой «Бухгалтерии предприятия» выгрузка занимает от нескольких минут, результат — десятки тысяч файлов.

После этого в каталоге появятся 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 и раздельное хранение: как организовать репозиторий

Выгруженный каталог — это готовая рабочая копия репозитория.

  1. Создайте репозиторий в каталоге выгрузки: git init.
  2. Добавьте .gitignore. Исключите всё, что генерирует среда, а не вы: логи, временные файлы, каталоги других программ.
  3. Сделайте первый коммит с чистой версией «как у поставщика». Это ваша точка отсчёта.
  4. Доработки делайте в отдельной ветке и коммитьте после каждого завершённого изменения.

Раздельное хранение удобно строить так:

Что хранитьГдеЗачем
Типовая конфигурация поставщикаветка vendorчистая база для сравнения при обновлении
Ваши доработкиветка main или developрабочая версия
Расширенияотдельный репозиторий или каталогнезависимая история

Когда выходит новый релиз поставщика, вы выгружаете его в ветку vendor, коммитите и сливаете в основную ветку. Git покажет конфликты только там, где вы и поставщик правили одно и то же место.

Следите за кодировкой и концами строк. Выгрузка платформы записывает файлы в UTF-8 с BOM. Если редактор или git переписывает кодировку, в следующей загрузке получите ошибку чтения. Отключите автоматическое преобразование концов строк для каталога конфигурации.

Что не стоит класть в тот же репозиторий: резервные копии баз, .dt, большие бинарные файлы и логи.

Возврат из файлов в базу: загрузка конфигурации

Обратная операция — Конфигурация → Загрузить конфигурацию из файлов…. Работает она зеркально:

  1. Откройте Конфигуратор той базы, куда нужно загрузить исходники.
  2. Выберите Конфигурация → Загрузить конфигурацию из файлов….
  3. Укажите каталог, в котором лежит Configuration.xml.
  4. Подтвердите замену. Конфигурация базы будет полностью заменена содержимым каталога.
  5. Примените изменения к базе данных: Конфигурация → Обновить конфигурацию базы данных (клавиша 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.

Для обновления структуры базы нужен монопольный доступ: все пользователи должны выйти. Заранее предупредите людей и не запускайте загрузку в рабочее время.

Что вам нужно сделать с исходниками?

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

Ошибок немного, и почти все сводятся к трём причинам: неподходящий каталог, нехватка прав и порча файлов.

Выгрузка не запускается или обрывается

  • Каталог не пуст или защищён от записи — выберите другую папку.
  • Не хватает места: типовая конфигурация даёт сотни мегабайт XML и BSL, закладывайте запас в несколько гигабайт.
  • Длинные пути. Вложенность объектов с именами на русском даёт пути больше 260 символов. Выгружайте в короткий путь вроде D:\src\x.
  • Не хватает прав у пользователя или неверен путь к базе. Причину ищите в файле /Out.

Загрузка ругается на формат

  • В XML вручную правили служебные идентификаторы или структуру. Платформа строго проверяет схему файлов.
  • Редактор сохранил файл в другой кодировке или потерял BOM.
  • В каталоге остались файлы удалённых объектов: после ручного удаления объекта уберите его и из Configuration.xml, иначе будет ссылка на несуществующий элемент.

База не стартует после загрузки

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

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

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

Чем выгрузка в файлы отличается от сохранения в `.cf`?
.cf — один двоичный файл конфигурации. Выгрузка в файлы — дерево текстовых файлов, которое читается человеком и хорошо работает с Git.
Попадают ли в выгрузку данные и пользователи базы?
Нет. Выгружаются только метаданные, модули и макеты. Данные и пользователей сохраняйте выгрузкой информационной базы в .dt.
Можно ли редактировать XML-файлы вручную?
Можно, но осторожно. BSL-модули правят свободно. Структуру метаданных в XML лучше менять в Конфигураторе, иначе загрузка может не пройти проверку схемы.
Работает ли выгрузка для расширений?
Да. Расширение выгружается отдельно от основной конфигурации и хранится в своём каталоге.
Можно ли выгружать конфигурацию, если она на поддержке и запрещено изменение?
Выгрузка только читает конфигурацию, поэтому поддержка ей не мешает. Перед загрузкой в конфигурацию на поддержке проверьте, что правила поддержки разрешают такие изменения.
Нужно ли всем пользователям выходить из базы?
Для обновления структуры базы данных после загрузки нужен монопольный доступ. Перед загрузкой в рабочую базу попросите всех выйти.