Как загрузить конкретную подсистему из XML-файлов выгрузки конфигурации 1С?

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

При работе с платформой 1С:Предприятие 8.3 разработчики часто используют механизм выгрузки конфигурации в файлы XML. Это крайне удобно для групповой разработки, интеграции с системами контроля версий (Git) и автоматизации сборки. Однако иногда возникает прикладная задача: у нас есть полный каталог выгруженных XML-файлов (например, от тяжелой конфигурации вроде "Управление строительной организацией"), и нам требуется перенести в другую, абсолютно пустую или типовую базу, только одну конкретную подсистему со всеми входящими в нее объектами (справочниками, документами, регистрами). При этом у нас нет готового файла конфигурации .cf, а только набор XML-файлов.

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

Решение 1. Сравнение и объединение напрямую с XML-файлами (без сборки .cf)

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

Рассмотрим этот процесс по шагам:

  1. Запустите целевую базу в режиме Конфигуратор. Обратите внимание, что база должна быть предварительно создана, и в ней должна быть открыта конфигурация (меню Конфигурация — Открыть конфигурацию). Если база абсолютно пустая, сохраните пустую конфигурацию хотя бы один раз.
  2. Перейдите в главное меню: Конфигурация — Сравнить, объединить с конфигурацией из файла...
  3. В появившемся стандартном диалоговом окне выбора файла в правом нижнем углу обратите внимание на фильтр типов файлов. По умолчанию там выбрано "Файлы конфигураций (*.cf)". Измените тип файла или просто перейдите в каталог с вашей XML-выгрузкой.
  4. Найдите в корневом каталоге выгрузки файл с именем Configuration.xml. Именно этот файл является точкой входа, описывающей всю структуру конфигурации. Выберите его и нажмите "Открыть".
  5. Платформа 1С начнет чтение файлов метаданных. Это может занять некоторое время в зависимости от размера исходной конфигурации. После завершения анализа откроется стандартное окно сравнения и объединения.
  6. Теперь нам нужно отсечь все лишнее и оставить только целевую подсистему. Для этого нажмите кнопку "Действия" (или воспользуйтесь шестеренкой параметров) и выберите пункт "Установить по подсистемам конфигурации..." (либо используйте фильтр по подсистемам).
  7. В открывшемся окне выбора подсистем снимите флажки со всех веток и отметьте галочкой только ту подсистему, которую необходимо перенести. Платформа автоматически проанализирует состав подсистемы и выставит отметки (галочки) только на те объекты (справочники, регистры, роли и т.д.), которые явно входят в данную подсистему.
  8. Нажмите кнопку "Выполнить". Платформа перенесет выбранные метаданные из XML-файлов в вашу текущую конфигурацию.

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

Решение 2. Предварительная сборка файла конфигурации (.cf) из XML

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

Для выполнения этой операции нам понадобится пустая техническая информационная база. Процесс сборки и последующего объединения выглядит следующим образом:

  1. Создайте новую пустую файловую базу (например, в каталоге C:\Temp\BuilderBase).
  2. Запустите командную строку (cmd) и выполните пакетную загрузку конфигурации из файлов XML. Для этого используется ключ /LoadConfigFromFiles. Напишем пример команды:

"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /F "C:\Temp\BuilderBase" /LoadConfigFromFiles "C:\MyXMLDumpDirectory" /UpdateDBCfg

Разберем параметры этой команды подробнее:

  1. После завершения процесса сборки откройте созданную базу BuilderBase в режиме Конфигуратора обычным способом.
  2. Выгрузите получившуюся конфигурацию в файл через меню Конфигурация — Сохранить конфигурацию в файл... (создайте файл, например, isolated.cf).
  3. Теперь откройте вашу рабочую или целевую базу в Конфигураторе и выполните стандартное сравнение и объединение (Конфигурация — Сравнить, объединить с конфигурацией из файла...), выбрав созданный файл isolated.cf. Точно так же, как и в первом методе, примените фильтр по подсистемам, чтобы перенести только нужную ветку метаданных.

Решение 3. Использование штатного механизма частичной загрузки (CLI)

Начиная с версий платформы 8.3.7+, разработчикам стал доступен механизм частичной (инкрементальной) загрузки конфигурации из XML. Этот подход ориентирован на автоматизацию и сценарии непрерывной интеграции (CI/CD), когда нам нужно обновить только конкретные файлы без полной перезагрузки всей конфигурации.

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

Пример использования параметра -files для загрузки конкретного справочника и самой подсистемы:


1cv8.exe DESIGNER /F "C:\1C_Bases\TargetBase" /LoadConfigFromFiles "C:\MyXMLDumpDirectory" -files "Subsystems\ИмяПодсистемы.xml,Catalogs\ИмяСправочника.xml" /UpdateDBCfg

Важные технологические ограничения данного метода:

  1. Целостность связей метаданных: Вы не сможете загрузить подчиненный объект (например, реквизит или форму справочника) без самого справочника. Также нельзя загрузить объект метаданных, если в целевой конфигурации отсутствует его родительский объект или если его уникальный идентификатор (UUID) не зарегистрирован в главном файле структуры Configuration.xml. При нарушении этих связей платформа выдаст ошибку: "нельзя добавлять объекты метаданных без загрузки родительского объекта".
  2. Идентификатор конфигурации: Частичная загрузка не сработает в абсолютно чистую базу "с нуля". Целевая база должна быть предварительно инициализирована той же конфигурацией (должна совпадать базовая структура и идентификатор конфигурации). Если идентификаторы различаются, платформа выдаст ошибку: "идентификатор загружаемой конфигурации отличается от идентификатора сохраненной конфигурации".

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

Современная среда разработки 1C:EDT построена на базе Eclipse и изначально ориентирована на работу с проектами в формате XML-файлов. Если вы регулярно сталкиваетесь с задачами выборочного переноса подсистем или модулей, EDT предоставляет для этого наиболее удобный визуальный инструментарий.

Проанализируем алгоритм работы в среде EDT:

  1. Импортируйте каталог с выгруженными XML-файлами как новый проект в EDT (меню Файл — Импорт — Конфигурация 1С:Предприятия из файлов...).
  2. Создайте или импортируйте второй проект — вашу целевую конфигурацию, куда необходимо перенести подсистему.
  3. В панели "Навигатор" разверните структуру первого проекта, найдите нужную подсистему в ветке Общие -> Подсистемы.
  4. Благодаря архитектуре EDT, вы можете просто перетащить (Drag-and-Drop) нужную подсистему из одного проекта в другой. Среда разработки автоматически проанализирует все зависимости (связанные справочники, документы, общие модули) и предложит перенести их вместе с подсистемой для сохранения работоспособности кода.
  5. После успешного копирования элементов внутри EDT выполните экспорт проекта в целевую базу данных 1С (нажатием одной кнопки "Обновить конфигурацию в информационной базе").

Резюме и рекомендации

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

← На главную