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