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