При работе с платформой 1С:Предприятие 8.3 разработчики часто используют механизм выгрузки конфигурации в файлы XML. Это крайне удобно для групповой разработки, интеграции с системами контроля версий (Git) и автоматизации сборки. Однако иногда возникает прикладная задача: у нас есть полный каталог выгруженных XML-файлов (например, от тяжелой конфигурации вроде "Управление строительной организацией"), и нам требуется перенести в другую, абсолютно пустую или типовую базу, только одну конкретную подсистему со всеми входящими в нее объектами (справочниками, документами, регистрами). При этом у нас нет готового файла конфигурации .cf, а только набор XML-файлов.
В этой статье мы подробно разберем, как решить эту задачу несколькими способами: от простого интерактивного объединения до автоматизированных сценариев командной строки и использования современной среды разработки 1C:EDT.
Решение 1. Сравнение и объединение напрямую с XML-файлами (без сборки .cf)
Многие специалисты не знают, что штатный механизм сравнения и объединения конфигураций в Конфигураторе умеет работать не только с бинарными файлами .cf, но и напрямую с каталогами выгрузки XML. Это самый быстрый и безопасный интерактивный способ перенести подсистему, не выполняя лишних промежуточных действий.
Рассмотрим этот процесс по шагам:
Запустите целевую базу в режиме Конфигуратор. Обратите внимание, что база должна быть предварительно создана, и в ней должна быть открыта конфигурация (меню Конфигурация — Открыть конфигурацию). Если база абсолютно пустая, сохраните пустую конфигурацию хотя бы один раз.
Перейдите в главное меню: Конфигурация — Сравнить, объединить с конфигурацией из файла...
В появившемся стандартном диалоговом окне выбора файла в правом нижнем углу обратите внимание на фильтр типов файлов. По умолчанию там выбрано "Файлы конфигураций (*.cf)". Измените тип файла или просто перейдите в каталог с вашей XML-выгрузкой.
Найдите в корневом каталоге выгрузки файл с именем Configuration.xml. Именно этот файл является точкой входа, описывающей всю структуру конфигурации. Выберите его и нажмите "Открыть".
Платформа 1С начнет чтение файлов метаданных. Это может занять некоторое время в зависимости от размера исходной конфигурации. После завершения анализа откроется стандартное окно сравнения и объединения.
Теперь нам нужно отсечь все лишнее и оставить только целевую подсистему. Для этого нажмите кнопку "Действия" (или воспользуйтесь шестеренкой параметров) и выберите пункт "Установить по подсистемам конфигурации..." (либо используйте фильтр по подсистемам).
В открывшемся окне выбора подсистем снимите флажки со всех веток и отметьте галочкой только ту подсистему, которую необходимо перенести. Платформа автоматически проанализирует состав подсистемы и выставит отметки (галочки) только на те объекты (справочники, регистры, роли и т.д.), которые явно входят в данную подсистему.
Нажмите кнопку "Выполнить". Платформа перенесет выбранные метаданные из XML-файлов в вашу текущую конфигурацию.
Этот метод исключает необходимость предварительной сборки файлов конфигурации и позволяет наглядно контролировать состав переносимых данных.
Решение 2. Предварительная сборка файла конфигурации (.cf) из XML
Если по каким-то причинам прямое сравнение с XML вызывает ошибки или вам требуется получить полноценный файл .cf для передачи другим разработчикам, мы можем пойти путем сборки файла конфигурации из исходных XML-текстов.
Для выполнения этой операции нам понадобится пустая техническая информационная база. Процесс сборки и последующего объединения выглядит следующим образом:
Создайте новую пустую файловую базу (например, в каталоге C:\Temp\BuilderBase).
Запустите командную строку (cmd) и выполните пакетную загрузку конфигурации из файлов XML. Для этого используется ключ /LoadConfigFromFiles. Напишем пример команды:
DESIGNER — запуск платформы в режиме конфигуратора.
/F "C:\Temp\BuilderBase" — путь к нашей временной пустой базе.
/LoadConfigFromFiles "C:\MyXMLDumpDirectory" — ключевой параметр, указывающий путь к каталогу, где лежат выгруженные XML-файлы.
/UpdateDBCfg — обновляет конфигурацию базы данных после успешной загрузки структуры метаданных.
После завершения процесса сборки откройте созданную базу BuilderBase в режиме Конфигуратора обычным способом.
Выгрузите получившуюся конфигурацию в файл через меню Конфигурация — Сохранить конфигурацию в файл... (создайте файл, например, isolated.cf).
Теперь откройте вашу рабочую или целевую базу в Конфигураторе и выполните стандартное сравнение и объединение (Конфигурация — Сравнить, объединить с конфигурацией из файла...), выбрав созданный файл isolated.cf. Точно так же, как и в первом методе, примените фильтр по подсистемам, чтобы перенести только нужную ветку метаданных.
Решение 3. Использование штатного механизма частичной загрузки (CLI)
Начиная с версий платформы 8.3.7+, разработчикам стал доступен механизм частичной (инкрементальной) загрузки конфигурации из XML. Этот подход ориентирован на автоматизацию и сценарии непрерывной интеграции (CI/CD), когда нам нужно обновить только конкретные файлы без полной перезагрузки всей конфигурации.
Для выборочной загрузки используются дополнительные ключи командной строки:
-files — позволяет перечислить конкретные пути к загружаемым XML-файлам через запятую.
-listFile — указывает на текстовый файл (в кодировке UTF-8), внутри которого построчно записаны относительные пути к файлам метаданных, подлежащим загрузке.
Пример использования параметра -files для загрузки конкретного справочника и самой подсистемы:
Важные технологические ограничения данного метода:
Целостность связей метаданных: Вы не сможете загрузить подчиненный объект (например, реквизит или форму справочника) без самого справочника. Также нельзя загрузить объект метаданных, если в целевой конфигурации отсутствует его родительский объект или если его уникальный идентификатор (UUID) не зарегистрирован в главном файле структуры Configuration.xml. При нарушении этих связей платформа выдаст ошибку: "нельзя добавлять объекты метаданных без загрузки родительского объекта".
Идентификатор конфигурации: Частичная загрузка не сработает в абсолютно чистую базу "с нуля". Целевая база должна быть предварительно инициализирована той же конфигурацией (должна совпадать базовая структура и идентификатор конфигурации). Если идентификаторы различаются, платформа выдаст ошибку: "идентификатор загружаемой конфигурации отличается от идентификатора сохраненной конфигурации".
Решение 4. Использование среды разработки 1C:EDT (Enterprise Development Tools)
Современная среда разработки 1C:EDT построена на базе Eclipse и изначально ориентирована на работу с проектами в формате XML-файлов. Если вы регулярно сталкиваетесь с задачами выборочного переноса подсистем или модулей, EDT предоставляет для этого наиболее удобный визуальный инструментарий.
Проанализируем алгоритм работы в среде EDT:
Импортируйте каталог с выгруженными XML-файлами как новый проект в EDT (меню Файл — Импорт — Конфигурация 1С:Предприятия из файлов...).
Создайте или импортируйте второй проект — вашу целевую конфигурацию, куда необходимо перенести подсистему.
В панели "Навигатор" разверните структуру первого проекта, найдите нужную подсистему в ветке Общие -> Подсистемы.
Благодаря архитектуре EDT, вы можете просто перетащить (Drag-and-Drop) нужную подсистему из одного проекта в другой. Среда разработки автоматически проанализирует все зависимости (связанные справочники, документы, общие модули) и предложит перенести их вместе с подсистемой для сохранения работоспособности кода.
После успешного копирования элементов внутри EDT выполните экспорт проекта в целевую базу данных 1С (нажатием одной кнопки "Обновить конфигурацию в информационной базе").
Резюме и рекомендации
Выбор конкретного метода зависит от технических условий вашей задачи:
Если вам нужно быстро решить задачу "здесь и сейчас" в интерактивном режиме — используйте Решение 1 (сравнение напрямую с файлом Configuration.xml). Это самый практичный и надежный способ для повседневной работы разработчика.
Если вы настраиваете автоматические скрипты сборки или деплоя на сервере — используйте пакетные ключи командной строки /LoadConfigFromFiles с параметрами -files или -listFile (Решение 3).
Если вы ведете разработку по современным стандартам с использованием Git — переходите на среду 1C:EDT (Решение 4), которая избавит вас от ручной рутины по отслеживанию связей между объектами метаданных.