При организации обмена между доработанной конфигурацией (например, «1С:Общепит 3.0») и типовой «1С:Бухгалтерией предприятия 3.0» разработчики часто сталкиваются с ситуацией, когда правила выгрузки, созданные в конфигурации «Конвертация данных 2.1», отказываются загружаться через штатный интерфейс синхронизации БСП. При попытке подгрузить XML-файл система выдает сообщение «Ошибка формата правил».
Разберем подробно причины этой ошибки, проанализируем устройство подсистемы синхронизации и рассмотрим эффективные варианты организации постоянного обмена данными с отслеживанием изменений по узлам плана обмена.
Выясним, почему штатный механизм синхронизации данных подсистемы БСП (Библиотека Стандартных Подсистем) не принимает обычные XML-файлы из КД 2.1:
ExchangeRules.xml), правила регистрации (RegistrationRules.xml) и правила приемника (CorrespondentExchangeRules.xml). Простой XML-файл, выгруженный из КД 2.1, не соответствует данному формату.Если требуется использовать правила из КД 2.1 без переработки всего обмена под формат КД 3.0, необходимо задействовать обработку УниверсальныйОбменДаннымиXML в связке с планом обмена для регистрации изменений.
Рассмотрим порядок настройки отбора и выгрузки по зарегистрированным изменениям:
ЭтотУзел, так как для него изменения не накапливаются.РегистрацияИзмененийДляОбменаДанными.Чтобы исключить ручной запуск универсальной обработки и организовать фоновую регулярную синхронизацию, проанализируем пример программного вызова выгрузки и загрузки данных.
Для стороны базы-источника создадим регламентное задание со следующим алгоритмом выгрузки:
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.РежимОбмена = "Выгрузка";
ОбработкаОбмена.ИмяФайлаПравилОбмена = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаОбмена = "C:\Exchange\Data.xml";
// Указываем узел-приемник, для которого зарегистрированы изменения
ОбработкаОбмена.УзелОбмена = ПланыОбмена.МойПланОбмена.НайтиПоКоду("БП");
// Загружаем правила и запускаем выгрузку
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
ОбработкаОбмена.ВыполнитьВыгрузку();
На стороне базы-приемника (например, «Бухгалтерия предприятия 3.0») программный код загрузки данных из сформированного XML-файла выглядит следующим образом:
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.РежимОбмена = "Загрузка";
ОбработкаОбмена.ИмяФайлаОбмена = "C:\Exchange\Data.xml";
// Задаем флаги безопасной записи данных
ОбработкаОбмена.ЗагружатьДанныеВРежимеОбмена = Истина;
ОбработкаОбмена.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина;
ОбработкаОбмена.ВыполнитьЗагрузку();
Рассмотрим альтернативный вариант, позволяющий подгрузить правила КД 2.1 в штатную синхронизацию БСП без написания программного кода:
ExchangeRules.xml.RegistrationRules.xml.Если конфигурация «1С:Общепит 3.0» активно развивается и обновляется следом за типовой «Бухгалтерией предприятия 3.0», оптимальным техническим решением является перенос правил обмена на платформу Конвертация данных 3.0.
Это дает следующие преимущества:
УниверсальныйОбменДаннымиXML.