Как настроить сопоставление объектов и избежать дублей при обмене данными между УТ 10.3 и БП 2.0?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Бухгалтерский учет Торговля и дистрибуция
← На главную

При организации регулярного обмена данными между конфигурациями «Управление торговлей 10.3» (УТ) и «Бухгалтерия предприятия 2.0» (БП) пользователи часто сталкиваются с неприятной проблемой — появлением дублирующихся карточек контрагентов в базе-приемнике. Бухгалтеры, запускающие обмен вручную, справедливо хотят контролировать этот процесс и сопоставлять спорных контрагентов интерактивно, чтобы не плодить дубли.

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


Как устроен механизм поиска и сопоставления «под капотом»

Для того чтобы эффективно бороться с дублированием, давайте сначала разберем техническую сторону процесса синхронизации. Обмен между УТ 10.3 и БП 2.0 реализован на базе правил, созданных в специализированной системе «1С:Конвертация данных 2.1». Поиск объектов при загрузке происходит строго по следующему двухэтапному алгоритму:

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

Почему же тогда возникают дубли? Основная причина — это человеческий фактор и различия в заполнении реквизитов. Если в УТ 10.3 ИНН или КПП заполнен с лишним пробелом, опечаткой, или в одной из баз КПП вообще не указан, стандартный алгоритм сопоставления сочтет этих контрагентов разными. Поскольку интерактивного диалога в старых конфигурациях по умолчанию нет, система просто создаст новую карточку (дубль) в базе-приемнике.


Вариант 1. Модификация правил поиска в «1С:Конвертация данных 2.1»

Самый надежный способ устранить проблему автоматически — это скорректировать правила обмена XML. Если у вас есть доступ к конфигурации «Конвертация данных 2.1», вы можете настроить более гибкий поиск без написания сложного интерфейса сопоставления. Рассмотрим подробнее, что можно сделать в правилах конвертации объектов (ПКО) для контрагентов:

Посмотрим на пример кода, который программист может разместить в обработчике ПоляПоиска для удаления лишних пробелов и символов перед сопоставлением:


// Очищаем ИНН от возможных пробелов и случайных символов перед поиском
Если СвойстваПоиска.Получить("ИНН") <> Неопределено Тогда
    ИНН_Очищенный = СокрЛП(СвойстваПоиска["ИНН"]);
    ИНН_Очищенный = СтрЗаменить(ИНН_Очищенный, " ", "");
    ИНН_Очищенный = СтрЗаменить(ИНН_Очищенный, "-", "");
    СвойстваПоиска.Вставить("ИНН", ИНН_Очищенный);
КонецЕсли;

// Если ИНН заполнен, приоритетно ищем только по нему (игнорируя КПП, если он мешает сопоставлению)
Если ЗначениеЗаполнено(СвойстваПоиска.Получить("ИНН")) Тогда
    СтрокаИменСвойствПоиска = "ИНН";
КонецЕсли;

Такая простая доработка правил обмена решает до 95% проблем с возникновением дубликатов без необходимости ручного вмешательства пользователя при каждом обмене.


Вариант 2. Использование штатной обработки «Поиск и замена дублей»

Если дублирующие карточки контрагентов уже созданы и продолжают периодически появляться, мы можем эффективно бороться с ними непосредственно в базе-приемнике «Бухгалтерия предприятия 2.0». Для этого разберем по шагам порядок действий бухгалтера:

  1. Откройте в БП 2.0 встроенную обработку «Поиск и замена дублей» (в некоторых редакциях она называется «Поиск и удаление дублей»). Если ее нет в меню, ее можно запустить как внешнюю обработку (взяв с диска ИТС или из каталога шаблонов конфигурации).
  2. Настройте правила поиска: выберите объект Контрагенты и укажите критерий сравнения (например, «Совпадение по ИНН»).
  3. Нажмите кнопку «Найти дубли». Система сгруппирует похожие элементы.
  4. В появившемся списке выберите правильную карточку (оригинал), которая будет сохранена в системе. Остальные копии отметьте как дубли.
  5. Нажмите кнопку «Выполнить замену».

Важнейший нюанс, о котором нужно знать: При замене дублей обработка переносит все ссылки из документов (накладных, платежных поручений) на выбранный оригинал. Кроме того, в регистре сведений СоответствиеОбъектовДляОбмена автоматически перепишется связь: старый GUID дубля удалится, а правильный GUID оригинального контрагента свяжется с объектом из УТ. Это означает, что при всех последующих обменах этот контрагент больше никогда не задвоится — система сразу найдет правильную карточку по GUID!


Вариант 3. Использование модифицированных интерактивных обработок обмена

Поскольку стандартная обработка УниверсальныйОбменДаннымиXML в обычных формах работает «вслепую» (сразу записывает данные в базу при чтении файла), для ручного контроля можно прибегнуть к альтернативным инструментам.

В сообществе разработчиков 1С популярны модифицированные версии обработок обмена данными. Их логика работы выглядит следующим образом:

Если для вашей компании критически важно контролировать каждый шаг загрузки, рекомендуется обратиться к программисту для внедрения подобной интерактивной обработки обмена.


Вариант 4. Административный регламент заполнения данных

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

Перед тем как запускать первый обмен (или при вводе новых контрагентов в базы вручную), выработайте жесткий регламент заполнения карточек:

Если перед запуском обмена ключевые контрагенты в обеих базах будут иметь абсолютно идентичные ИНН и КПП, то при самом первом сеансе связи алгоритмы обмена гарантированно сопоставят их и зафиксируют связи по GUID в регистре СоответствиеОбъектовДляОбмена. В дальнейшем пользователи смогут менять адреса, телефоны или даже наименования этих контрагентов в УТ — в бухгалтерии они обновятся корректно и без создания дубликатов.

← На главную