При сопровождении нескольких информационных баз 1С часто возникает задача: передавать документы и справочники из центральной доработанной базы в типовые базы по конкретным организациям. Попытки использовать простую обработку ВыгрузкаЗагрузкаДанныхXML в таких сценариях регулярно приводят к ошибкам при загрузке, а стандартный РИБ (распределенная информационная база) не подходит из-за различий в структуре метаданных. Разберем, почему возникают сбои и какие архитектурные решения позволяют настроить стабильный односторонний или двусторонний обмен, не требующий ручной корректировки при каждом обновлении конфигураций.
Обработка ВыгрузкаЗагрузкаДанныхXML использует механизм жесткой XDTO-сериализации платформы с помощью методов ЗаписатьXML() и ПрочитатьXML(). Этот инструмент предназначен исключительно для переноса данных между базами с полностью совпадающей структурой метаданных. Проанализируем основные причины сбоев:
ДокументСсылка.ПлатежноеПоручение) добавлены новые реквизиты, табличные части или изменен состав типов, сериализатор выгружает их в XML. База-приемник при чтении файла не находит этих объектов в своей схеме метаданных и аварийно завершает операцию.Важно понимать разделение зон ответственности в платформе 1С: сам по себе объект метаданных ПланОбмена не выполняет передачу данных. Его назначение — фиксация изменений (служба регистрации изменений). Механизм регистрирует факт изменения объектов с помощью таблиц изменений, а выборка выполняется методом ПланыОбмена.ВыбратьИзменения().
Формирование пакета данных, маршрутизация, трансформация структуры и транспорт (файлы, веб-сервисы, COM, прямые HTTP-запросы) реализуются прикладным кодом или библиотеками, такими как БСП (Библиотека стандартных подсистем).
Использование универсального формата обмена (EnterpriseData) — наиболее масштабируемый и устойчивый к обновлениям подход для современных конфигураций на базе БСП.
Формат EnterpriseData опирается на фиксированную XDTO-схему бизнес-сущностей, а не на метаданные конкретной конфигурации. Если в центральной базе добавлены нетиповые реквизиты, типовой менеджер выгрузки просто не включит их в стандартные XML/JSON-сообщения, благодаря чему база-приемник гарантированно примет пакет.
Пошаговый порядок настройки:
МенеджерОбменаЧерезУниверсальныйФорматПереопределяемый с помощью расширения конфигурации (аннотации &Вместо, &После). Основная конфигурация при этом остается на полной поддержке.Если конфигурации сильно различаются или требуется переносить документы с движениями регистров, оптимальным вариантом остается разработка правил в конфигурации «1С:Конвертация данных 2.1» и использование обработки УниверсальныйОбменДаннымиXML.
Преимущества данного способа:
УниверсальныйОбменДаннымиXML регламентным заданием в фоновом режиме.Посмотрим на пример программного вызова выгрузки по правилам КД 2.0:
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.ИмяФайлаПравил = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаДанных = "C:\Exchange\Message.xml";
ОбработкаОбмена.РежимОбмена = "Выгрузка";
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
ОбработкаОбмена.ВыполнитьВыгрузку();
В ситуациях, когда требуется исключить хранение файлов обмена и видимые пользователю операции, организуется прямая передача данных из центральной базы в приемники.
V83.COMConnector): Центральная база регистрирует изменения в собственном плане обмена, подключается к базам-приемникам по COM и напрямую создает или обновляет типовые документы. В базе-приемнике не создаются узлы планов обмена, а процесс выполняется незаметно в фоновом режиме.POST. Это устраняет зависимость от разрядности платформы и версий COM-компонентов.Для долговременной стабильности центральной базы рекомендуется вынести все добавленные реквизиты, документы и справочники в расширение конфигурации (.cfe). В этом случае основная конфигурация центральной базы возвращается к полностью типовому состоянию (идентичному базам-приемникам). Это устраняет конфликты метаданных при типовых обменах и существенно упрощает установку регулярных обновлений от поставщика.