Механизм выгрузки и загрузки конфигурации в файлы XML — один из ключевых инструментов платформы 1С:Предприятие 8.3, используемый для версионирования, автоматизации сборки (CI/CD) и точечного переноса изменений. Однако при попытке выполнить частичную загрузку отдельного объекта метаданных (например, обработки или справочника) разработчики часто сталкиваются с ошибками Конфигуратора. Разберем по шагам, почему возникают эти ошибки и как правильно организовать частичную загрузку через командную строку.
Рассмотрим практическую ситуацию. Требуется выгрузить из информационной базы только один объект метаданных (например, обработку Обработка.ирПлатформа) в файлы XML, а затем загрузить его обратно в эту же или аналогичную базу с помощью параметров командной строки /DumpConfigToFiles и /LoadConfigFromFiles.
При вызове командной строки выгрузки и загрузки обычно используются ключи -listFile (файл со списком) или -Files (перечисление XML-файлов через запятую).
На практике при частичной загрузке разработчики сталкиваются со следующими двумя типами ошибок:
Ошибка добавления объекта DataProcessor uuid="..." : нельзя добавлять объекты метаданных без загрузки родительского объекта.Файл - Configuration.xml: ошибка частичной загрузки - идентификатор ada14b12-452d-4f85-9d71-99554e8fc6c0 загружаемой конфигурации отличается от идентификатора 51b18189-52ce-47d5-aa86-44d00c7a17c8 сохраненной конфигурацииПосмотрим на исходный пример кода, при котором возникали описанные выше проблемы:
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстСпискаОбъектовКонфигурации = Метаданные.Обработки.ирПлатформа.ПолноеИмя();
ИмяФайлаСпискаВыгрузки = ПолучитьИмяВременногоФайла("txt");
ТекстовыйДокумент.УстановитьТекст(ТекстСпискаОбъектовКонфигурации);
ТекстовыйДокумент.Записать(ИмяФайлаСпискаВыгрузки);
КаталогВыгрузкиКонфигурации = ПолучитьИмяВременногоФайла();
СоздатьКаталог(КаталогВыгрузкиКонфигурации);
ТекстЛога = "";
// Выгрузка конфигурации по списку
Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/DumpConfigToFiles """ + КаталогВыгрузкиКонфигурации + """ -listFile """ + ИмяФайлаСпискаВыгрузки + """ -Format Plain",
СтрокаСоединенияИнформационнойБазы(), ТекстЛога, , "Выгрузка конфигурации в файлы");
УдалитьФайлы(ИмяФайлаСпискаВыгрузки);
// Формируем список выгруженных XML-файлов
ФайлыДляЗагрузки = НайтиФайлы(КаталогВыгрузкиКонфигурации, "*.xml");
ИменаФайлов = Новый Массив;
Для Каждого Файл Из ФайлыДляЗагрузки Цикл
ИменаФайлов.Добавить(Файл.ПолноеИмя);
КонецЦикла;
СтрокаИменФайловЗагрузки = ирОбщий.ПолучитьСтрокуСРазделителемИзМассиваЛкс(ИменаФайлов, ",");
// ОШИБКА: Пропущена строка соединения с базой при загрузке!
Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/LoadConfigFromFiles """ + КаталогВыгрузкиКонфигурации + """ -Files """ + СтрокаИменФайловЗагрузки + """ -Format Plain",
, ТекстЛога, , "Загрузка конфигурации из файлов");
Главная причина появления ошибки «идентификатор загружаемой конфигурации отличается от идентификатора сохраненной конфигурации» заключается в том, что при вызове команды /LoadConfigFromFiles не была передана строка соединения с информационной базой. В результате вспомогательная функция запускала Конфигуратор для некоторой пустой или временной информационной базы по умолчанию.
Механизм частичной загрузки из XML рассчитан строго на применение изменений в ту же самую конфигурацию (или её точную копию), из которой производилась выгрузка. Каждая конфигурация 1С имеет уникальный идентификатор (GUID в файле Configuration.xml). Если пакетный режим Конфигуратора подключается к другой информационной базе, платформа обнаруживает несовпадение UUID загружаемого метаописания и базы-приемника и блокирует частичную загрузку.
Чтобы частичная загрузка объектов конфигурации из файлов проходила успешно, необходимо соблюдать следующие обязательные правила платформы 1С:
/F, /S, /N, /P) при выгрузке и при загрузке указывают на одну и ту же информационную базу или на базу с аналогичной исходной конфигурацией.-listFile при выгрузке (/DumpConfigToFiles) указываются полные имена объектов метаданных (например, Обработка.МояОбработка).-listFile или -Files при загрузке (/LoadConfigFromFiles) указываются относительные или полные пути к конкретным XML-файлам (например, DataProcessors/МояОбработка.xml или путь к Configuration.xml), а не имена объектов метаданных.-Format): При полной загрузке платформа способна определить формат автоматически, но при частичной загрузке ключ -Format Plain или -Format Hierarchical является обязательным. Формат выгрузки и загрузки должен полностью совпадать.Разберем корректную последовательность действий при частичной загрузке:
/LoadConfigFromFiles всегда передавайте правильную строку соединения с целевой базой данных.-Files передавайте список выгруженных XML-файлов, сформированный после выполнения команды /DumpConfigToFiles.-Format Plain (или Hierarchical), соответствующие исходному формату выгрузки./CompareCfg) с формированием файла настроек объединения вместо прямого использования частичной загрузки из XML.