Синхронизация данных между программами 1С:Бухгалтерия предприятия (БП) и 1С:Зарплата и управление персоналом (ЗУП) — это стандартная процедура, которая, однако, превращается в серьезную техническую проблему, когда количество баз БП превышает одну. Одной из самых острых проблем является появление дублей в справочнике Физические лица. Рассмотрим подробно, почему это происходит, какую архитектуру обмена выбрать и как технически устранить проблему зацикливания и дублирования данных.
Перед тем как переходить к техническим настройкам, разберем стратегический вопрос: как лучше организовать связь? Существует два основных подхода:
Проанализируем ситуацию: если сотрудник работает одновременно в двух компаниях холдинга (например, по внешнему совместительству), то в схеме 11 к 1 в базе ЗУП это будет одно Физическое лицо и два элемента справочника Сотрудники. При синхронизации с разными базами БП система должна четко понимать, к какому именно физлицу в бухгалтерии привязать данные. Если механизмы сопоставления настроены неверно, возникнет дубль.
Современный обмен в 1С (на платформе 8.3) работает через универсальный формат EnterpriseData. Рассмотрим, как система «узнает» объект при загрузке, если он уже существует в базе:
Физические лица это обычно Наименование (ФИО) + Дата рождения или ИНН/СНИЛС.Проанализируем причину дублей в вашей ситуации: скорее всего, данные заводились «нестандартно», то есть вручную в разных базах. При первом обмене система не смогла найти соответствие по полям поиска (из-за лишнего пробела, буквы «ё» вместо «е» или отсутствия даты рождения) и создала новый объект. В последующем система может продолжать создавать дубли, если правила поиска игнорируют ИНН или СНИЛС.
Выясним причину, по которой стандартный обмен часто дает сбой. По умолчанию приоритет сопоставления по ФИО выше, чем по ИНН. Однако ФИО — это строковый параметр, крайне чувствительный к ошибкам ввода. Рассмотрим решение через обязательное использование уникальных кодов.
Необходимо убедиться, что в обеих базах (БП и ЗУП) заполнены поля ИНН и СНИЛС. Если эти поля заполнены корректно, вы можете доработать правила обмена (если используется нетиповая синхронизация) или использовать стандартную обработку сопоставления данных при первой синхронизации.
Важный совет: Сделайте ЗУП «мастер-системой» для справочника физлиц. Это означает, что все новые сотрудники должны заводиться только в ЗУП, а в БП они должны попадать исключительно через синхронизацию.
Мало кто знает, что 1С хранит связи между объектами разных баз в специальном техническом регистре. Разберем, как это работает. Когда вы впервые сопоставляете Иванова из ЗУП с Ивановым из БП, в этом регистре создается запись: [ID базы ЗУП] + [GUID Иванова в ЗУП] = [GUID Иванова в БП].
Если вы уже получили дубли, простое удаление лишнего физлица может не помочь — при следующем обмене оно прилетит снова. Нужно:
Соответствия объектов информационных систем.Рассмотрим метод, предложенный опытными разработчиками: принудительная синхронизация по внутреннему идентификатору. Если у вас уже есть 11 баз БП и 1 ЗУП, и вы хотите «подружить» их без дублей, можно пойти по пути программной перепривязки. Выясним алгоритм:
// Пример логики поиска соответствия по ИНН перед загрузкой
Функция НайтиФизЛицоПоИНН(ЗначениеИНН)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ССЫЛКА
|ИЗ Справочник.ФизическиеЛица
|ГДЕ ИНН = &ИНН";
Запрос.УстановитьПараметр("ИНН", ЗначениеИНН);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Если вы используете правила обмена, созданные в Конвертации данных 2.0, добавьте в ПКС (Поля Конвертации Свойств) для физлиц поиск по ИНН и СНИЛС, установив флаг «Поиск». Это заставит систему игнорировать различия в написании ФИО, если ИНН совпал.
В архитектуре «11 к 1» в базе ЗУП будет создано 11 настроек синхронизации (11 узлов). Проанализируем важный нюанс: чтобы физлица из Организации №1 не попадали случайно в базу БП Организации №2, в настройках каждого узла на стороне ЗУП необходимо выставить фильтр «По организациям».
Несмотря на то что справочник Физические лица является общим для всей базы, механизм EnterpriseData умеет отсекать тех лиц, которые не имеют отношения к документам конкретной организации, выбранной в фильтре узла. Это значительно уменьшит «информационный шум» и риск появления лишних записей в бухгалтерских базах.
Разберем по шагам план спасения базы, если синхронизация уже запущена и дубли расплодились:
Переход на схему 11 БП / 11 ЗУП, к которому склонился автор темы, — это «капитуляция» перед технической сложностью. Да, это решит проблему дублей, но создаст огромные трудозатраты в будущем. Если организация планирует рост, лучше один раз настроить корректный поиск по ИНН/СНИЛС и навести порядок в регистре соответствий в схеме 11 БП / 1 ЗУП. Помните: GUID — это сердце синхронизации, а ИНН — ее главный предохранитель.