При организации регулярного обмена данными между конфигурациями «Управление торговлей 10.3» (УТ) и «Бухгалтерия предприятия 2.0» (БП) пользователи часто сталкиваются с неприятной проблемой — появлением дублирующихся карточек контрагентов в базе-приемнике. Бухгалтеры, запускающие обмен вручную, справедливо хотят контролировать этот процесс и сопоставлять спорных контрагентов интерактивно, чтобы не плодить дубли.
В современных конфигурациях 1С на управляемых формах (использующих Библиотеку Стандартных Подсистем — БСП) для этого предусмотрена удобная штатная форма сопоставления данных. Однако в классических конфигурациях на обычных формах (таких как УТ 10.3 и БП 2.0) стандартный обмен построен иначе. В этой статье мы подробно разберем, как устроен механизм поиска «под капотом», почему стандартные инструменты не дают интерактивного окна сопоставления и какими способами можно полностью решить проблему появления дублей.
Для того чтобы эффективно бороться с дублированием, давайте сначала разберем техническую сторону процесса синхронизации. Обмен между УТ 10.3 и БП 2.0 реализован на базе правил, созданных в специализированной системе «1С:Конвертация данных 2.1». Поиск объектов при загрузке происходит строго по следующему двухэтапному алгоритму:
СоответствиеОбъектовДляОбмена (или аналогичный регистр регистрации соответствий). Если запись с таким GUID уже существует, объект сопоставляется мгновенно и безошибочно.Контрагенты стандартными полями поиска обычно являются связки «ИНН + КПП» для юридических лиц или «Наименование» для физических лиц.Почему же тогда возникают дубли? Основная причина — это человеческий фактор и различия в заполнении реквизитов. Если в УТ 10.3 ИНН или КПП заполнен с лишним пробелом, опечаткой, или в одной из баз КПП вообще не указан, стандартный алгоритм сопоставления сочтет этих контрагентов разными. Поскольку интерактивного диалога в старых конфигурациях по умолчанию нет, система просто создаст новую карточку (дубль) в базе-приемнике.
Самый надежный способ устранить проблему автоматически — это скорректировать правила обмена XML. Если у вас есть доступ к конфигурации «Конвертация данных 2.1», вы можете настроить более гибкий поиск без написания сложного интерфейса сопоставления. Рассмотрим подробнее, что можно сделать в правилах конвертации объектов (ПКО) для контрагентов:
Посмотрим на пример кода, который программист может разместить в обработчике ПоляПоиска для удаления лишних пробелов и символов перед сопоставлением:
// Очищаем ИНН от возможных пробелов и случайных символов перед поиском
Если СвойстваПоиска.Получить("ИНН") <> Неопределено Тогда
ИНН_Очищенный = СокрЛП(СвойстваПоиска["ИНН"]);
ИНН_Очищенный = СтрЗаменить(ИНН_Очищенный, " ", "");
ИНН_Очищенный = СтрЗаменить(ИНН_Очищенный, "-", "");
СвойстваПоиска.Вставить("ИНН", ИНН_Очищенный);
КонецЕсли;
// Если ИНН заполнен, приоритетно ищем только по нему (игнорируя КПП, если он мешает сопоставлению)
Если ЗначениеЗаполнено(СвойстваПоиска.Получить("ИНН")) Тогда
СтрокаИменСвойствПоиска = "ИНН";
КонецЕсли;
Такая простая доработка правил обмена решает до 95% проблем с возникновением дубликатов без необходимости ручного вмешательства пользователя при каждом обмене.
Если дублирующие карточки контрагентов уже созданы и продолжают периодически появляться, мы можем эффективно бороться с ними непосредственно в базе-приемнике «Бухгалтерия предприятия 2.0». Для этого разберем по шагам порядок действий бухгалтера:
Контрагенты и укажите критерий сравнения (например, «Совпадение по ИНН»).Важнейший нюанс, о котором нужно знать: При замене дублей обработка переносит все ссылки из документов (накладных, платежных поручений) на выбранный оригинал. Кроме того, в регистре сведений СоответствиеОбъектовДляОбмена автоматически перепишется связь: старый GUID дубля удалится, а правильный GUID оригинального контрагента свяжется с объектом из УТ. Это означает, что при всех последующих обменах этот контрагент больше никогда не задвоится — система сразу найдет правильную карточку по GUID!
Поскольку стандартная обработка УниверсальныйОбменДаннымиXML в обычных формах работает «вслепую» (сразу записывает данные в базу при чтении файла), для ручного контроля можно прибегнуть к альтернативным инструментам.
В сообществе разработчиков 1С популярны модифицированные версии обработок обмена данными. Их логика работы выглядит следующим образом:
Если для вашей компании критически важно контролировать каждый шаг загрузки, рекомендуется обратиться к программисту для внедрения подобной интерактивной обработки обмена.
Проанализируем простую истину: чистота данных в информационных базах — это залог успешного обмена. Самый дешевый и бескодовый способ избежать дублей при первом запуске синхронизации — это административный порядок.
Перед тем как запускать первый обмен (или при вводе новых контрагентов в базы вручную), выработайте жесткий регламент заполнения карточек:
Если перед запуском обмена ключевые контрагенты в обеих базах будут иметь абсолютно идентичные ИНН и КПП, то при самом первом сеансе связи алгоритмы обмена гарантированно сопоставят их и зафиксируют связи по GUID в регистре СоответствиеОбъектовДляОбмена. В дальнейшем пользователи смогут менять адреса, телефоны или даже наименования этих контрагентов в УТ — в бухгалтерии они обновятся корректно и без создания дубликатов.