Как вызвать и настроить форму ручного сопоставления объектов БСП при обмене данными через Конвертацию данных 2.1

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При создании нетипового обмена данными с использованием программы «1С:Конвертация данных 2.1» (КД 2.1) и интеграции его в конфигурацию через подсистему «Синхронизация данных» БСП (Библиотека стандартных подсистем), разработчики часто сталкиваются с необходимостью дать пользователю возможность сопоставить объекты вручную. Это особенно актуально для таких справочников, как «Контрагенты», «Номенклатура» или «Физические лица», где автоматический поиск по ИНН, наименованию или коду может не дать результатов из-за ошибок ввода в разных базах.

В БСП для этих целей существует мощный стандартный механизм — обработка СопоставлениеОбъектовИнформационныхБаз. В этой статье мы подробно разберем, как заставить этот механизм работать для вашего нетипового плана обмена, что нужно настроить в конфигураторе и какие правила прописать в КД 2.1.

Шаг 1. Как БСП определяет необходимость ручного сопоставления

Для того чтобы система открыла форму сопоставления объектов, должны выполняться определенные условия. Разберем их подробнее:

  1. Режим запуска синхронизации: Форма сопоставления никогда не откроется при автоматическом обмене (например, по расписанию регламентным заданием). Чтобы вызвать это окно, пользователь должен запустить процесс интерактивно. Для этого в интерфейсе настройки синхронизации необходимо выбрать команду «Синхронизировать с дополнительными параметрами».
  2. Ограничение на стороне загрузки: Интерактивное сопоставление возможно только тогда, когда загрузка данных выполняется в текущем сеансе пользователя. Если обмен идет через веб-сервер в фоновом режиме, форма сопоставления открыта быть не может.
  3. Первый запуск обмена: При первоначальной настройке синхронизации (в помощнике настройки) шаг сопоставления данных обычно выводится принудительно, если система обнаруживает в загружаемом пакете новые, еще не сопоставленные объекты.

Шаг 2. Требования к плану обмена в конфигураторе

Если вы хотите, чтобы ваш нетиповой план обмена полноценно поддерживал интерактивные механизмы БСП (включая форму сопоставления), он должен быть правильно спроектирован. Проанализируем структуру плана обмена:

1. Стандартные реквизиты и табличные части. Ваш план обмена должен содержать реквизиты, управляющие режимами выгрузки и сопоставления. Простейший способ этого добиться — скопировать реквизиты из демонстрационного плана обмена БСП (например, _ДемоОбменСБиблиотекойСтандартныхПодсистем). Убедитесь, что в вашем плане обмена присутствуют реквизиты со ссылками на перечисления, отвечающие за режимы выгрузки объектов (например, РежимыВыгрузкиОбъектовОбмена).

2. Регистрация плана обмена в коде БСП. Система должна знать, что ваш план обмена интегрирован в подсистему синхронизации. Для этого необходимо зарегистрировать его в общем модуле ОбменДаннымиПереопределяемый. Найдем процедуру ПолучитьПланыОбмена() и добавим туда наш план обмена:


Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт

    // Регистрируем наш нетиповой план обмена в подсистеме БСП
    ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.НашНетиповойОбменДанными);

КонецПроцедуры

Без этой регистрации БСП просто проигнорирует ваш план обмена, и запустить для него интерактивные формы сопоставления будет невозможно.

Шаг 3. Как сопоставление работает на уровне Конвертации Данных 2.1

Рассмотрим детально, как КД 2.1 и БСП взаимодействуют при загрузке данных и сопоставлении объектов. Весь механизм опирается на стандартный регистр сведений БСП:

Шаг 4. Рекомендации по настройке КД 2.1 для корректной работы сопоставления

Чтобы ручное сопоставление работало стабильно и не приводило к дублированию информации или затиранию ручных настроек пользователей, придерживайтесь следующих правил при проектировании правил конвертации объектов (ПКО):

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

Таким образом, для реализации ручного сопоставления объектов вам не нужно писать сложные интерфейсные решения. Достаточно использовать штатные возможности БСП, запустив синхронизацию с дополнительными параметрами, и корректно настроить правила поиска в Конвертации данных 2.1.

← На главную