При переносе данных между базами 1С с помощью универсальной обработки Выгрузка и загрузка данных XML специалисты часто сталкиваются со сбоем: при попытке загрузить полученный XML-файл в целевую конфигурацию платформа выдает сообщение «Неверный формат файла выгрузки». Проблема может возникать даже в ситуациях, когда обе базы построены на одном и том же релизе конфигурации и платформы.
В этом материале мы подробно разберем причины возникновения этой ошибки, выясним, почему размер файла играет критическую роль, и проанализируем пошаговый алгоритм решения проблемы.
Проанализируем технические особенности работы обработки Выгрузка и загрузка данных XML. Данный инструмент осуществляет прямой перенос данных на основе считывания метаданных и XDTO-сериализации. В отличие от правил конвертации (используемых в «Конвертации данных»), эта обработка требует абсолютной идентичности структуры базовых объектов. Ошибка формата выгрузки обычно вызывается следующими факторами:
3.0.58.41) не гарантирует 100% совпадение метаданных. В одной из баз могли быть созданы дополнительные реквизиты, удалены объекты поддержки, установлены расширения или не завершены процессы обновления. При попытке прочитать XML-тег объекта, отсутствующего в целевой базе, считыватель выдает ошибку формата.</Данные>). Такой файл автоматически определяется синтаксическим анализатором XML как файл неверного формата.Первым и самым важным шагом является обеспечение абсолютного тождества метаданных базы-источника и базы-приемника. Выполним синхронизацию конфигураций по следующему алгоритму:
Конфигуратор..cf).Конфигуратор..cf.F7).После выравнивания структуры метаданных обе базы становятся полностью идентичными на уровне типов и реквизитов.
Чтобы избежать превышения лимитов памяти и некорректного формирования гигантских XML-файлов объемом 2 ГБ и выше, перейдем к порционному переносу информации. Проанализируем правильную последовательность выгрузки объектов:
Выгрузка и загрузка данных XML отметим только блок Справочники, Константы и Планы видов характеристик. Выгрузим и загрузим их в целевую базу.При формировании выгрузки обратим внимание на настройки обработки. Снимем флажок Выгружать логически связанные объекты (или «Выгружать по ссылкам»). Это предотвратит рекурсивный захват исторической информации, не относящейся к выбранному периоду, и снизит размер файла выгрузки в несколько раз.
Если требуется автоматизировать отключение выгрузки зависимых объектов программно при вызове механизмов сериализации XML, можно использовать следующий пример кода на языке 1С:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Data\ExportData.xml", "UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
// Начинаем запись корневого элемента
ЗаписьXML.ЗаписатьНачалоЭлемента("ВыгрузкаДанных");
// Выгрузка выборки без рекурсивного обхода связанных ссылок
Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектСсылка = Выборка.ПолучитьОбъект();
// Сериализуем только конкретный объект
Сериализатор.ЗаписатьXML(ЗаписьXML, ОбъектСсылка);
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
Перед выполнением загрузки в целевую базу необходимо убедиться в корректности прав пользователя, под которым запускается сеанс 1С:
Администратор системы и Полные права).RLS).Выгрузка и загрузка данных XML непосредственно под созданным администратором.Последовательное выполнение выравнивания конфигураций через .cf файл и разделение данных на логические порции позволяет полностью избавиться от ошибки «Неверный формат файла выгрузки» и успешно перенести любой объем информации между базами 1С.