Поводом для написания этой статьи стал очередной звонок бухгалтера с паникой перед сдачей отчетности по НДС. В прошлом квартале потратил много времени на уборку дублей контрагентов. И вновь они, те же самые и новые. Откуда?
Решил потратить время, и разобраться с причиной, а не следствием. Ситуация с основном актуальна при настроенных автоматических выгрузках через планы обмена из управляющей программы (в моем случае УТ 10.3) в бухгалтерию предприятия (в моем случае 2.0).
Несколько лет тому назад были установлены эти конфигурации, и настроен автоматический обмен между ними. Столкнулись с проблемой своеобразности ведения справочника контрагентов отделом продаж, которые начали заводить дубли контрагентов (с тем же ИНН/КПП/Наименованием) по тем или иным причинам (одного и того же контрагента они раскидывали по разным группам). Бухгалтерия высказала свое "фи", и постановила - нам не важно, что там у них, объединяйте карточки при загрузке в одну. Пришлось вмешаться в процесс переноса объектов правилами обмена. Убрали для контрагентов поиск по внутреннему идентификатору, и оставили поиск по ИНН+КПП+Наименование. Однако и тут всплыли свои подводные камни в виде любителей переименовывать наименования контрагентов (в результате создаются дубли в БП уже самими правилами). Собрались все вместе, обсудили, решили, убедили, что в УТ у нас дубли недопустимы, убрали их, вернулись к стандартным правилам.
Вот только после "причесывания" дублей в УТ и в БП - внутренние идентификаторы у многих контрагентов различались. А так как типовые правила обмена осуществляют поиск объектов исключительно по внутреннему идентификатору, то с очередной порцией документов в БП прилетал и новый дубль контрагента (в случае, если эти идентификаторы различались). Но универсальный обмен данными XML не был бы универсальным, если бы эту проблему обойти было невозможно. Т.к. идентификатор существующего объекта штатными средствами изменить невозможно, то можно обойти эту ситуацию при помощи специального регистра сведений "Соответствие объектов для обмена", который имеется во всех типовых конфигурациях от 1С.
Для того, чтобы не возникало новых дублей алгоритм уборки дублей стал следующим:
1. В БП при помощи обработки "Поиск и замена дублирующихся элементов" (она типовая, ее можно взять из конфигурации Управление торговлей или на диске ИТС, либо выбрать наиболее подходящую среди множества вариаций на самом Инфостарте) нахожу дубль, определяю верный элемент, нажимаю выполнить замену.
2. Получаю внутренний идентификатор единственного (после замены) объекта нашего дубля (набросал специально простенькую обработку для этого, чтобы внутренний идентификатор автоматически копировался в буфер обмена).
3. Открываю в УТ регистр "Соответствие объектов для обмена", делаю отбор по собственной ссылке.
4. Заменяю значение ссылки в другой ИБ для нашего узла обмена с БП значением, полученным в п. 2.
Собственно говоря, вот и все, после этого новые документы по контрагенту прилетают как положено, новых дублей не создается. Возможно статья будет кому-то полезна :)