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