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