Что делать, если после синхронизации 1С:Бухгалтерии 3.0 и 1С:ЗУП 3.1 задвоились физические лица?

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

Синхронизация данных между конфигурациями «1С:Бухгалтерия предприятия 3.0» (БП) и «1С:Зарплата и управление персоналом 3.1» (ЗУП) — стандартный и автоматизированный процесс. Однако на практике системные администраторы и бухгалтеры часто сталкиваются с неприятной ситуацией: после очередного сеанса обмена часть физических лиц в информационной базе БП задваивается. Попытки исправить это «в лоб» через ручное удаление записей в регистрах или простое объединение дублей часто приводят к еще более тяжелым последствиям — появлению в документах битых ссылок с надписью «🚩 <Объект не найден...>».

В этой статье мы подробно разберем, почему возникает эта проблема, как устроена техническая модель синхронизации и сопоставления объектов, а также предоставим пошаговую инструкцию по безопасному устранению дублей и восстановлению корректного обмена данными.

Выясняем причины: почему двоятся физические лица при обмене?

Для того чтобы решить проблему раз и навсегда, проанализируем внутренние механизмы платформы «1С:Предприятие 8.3». Синхронизация данных в современных конфигурациях строится на базе технологии EnterpriseData (КД3). Сопоставление объектов происходит по определенному алгоритму:

  1. Сначала система ищет точное совпадение по уникальному идентификатору (GUID / UID) объекта в специальном регистре сведений СоответствияОбъектовИнформационныхБаз.
  2. Если точного соответствия по GUID не найдено (например, при первом обмене), система пытается сопоставить объекты по так называемым «полям поиска» (полям сопоставления).

Для справочника ФизическиеЛица ключевыми полями сопоставления являются: ФИО (Наименование), Дата рождения, ИНН и СНИЛС. Если хотя бы один из этих параметров различается или не заполнен в одной из баз, система считает этих людей разными физическими лицами и создает новый элемент в базе-приемнике. Рассмотрим основные технические причины, приводящие к этому сбою:

Почему возникает ошибка «Объект не найден» при попытке исправить дубли?

Рассмотрим типичную ошибку администратора базы данных. Обнаружив дубли, пользователь открывает обработку «Поиск и удаление дублей» в БП, заменяет ссылки на «правильное» физлицо, удаляет «неправильный» дубликат, а затем очищает регистр СоответствияОбъектовИнформационныхБаз в обеих базах, надеясь начать сопоставление с чистого листа.

В результате при следующем обмене документами (например, ведомостями на выплату зарплаты или отражением зарплаты в бухучете) из ЗУП передаются ссылки на физических лиц, содержащие старые GUID. БП пытается найти эти объекты по идентификаторам, не находит их в справочнике (так как дубликаты были физически удалены), не находит связей в регистре соответствия и выводит в проводках и документах битые ссылки 🚩 <Объект не найден...>. Чтобы этого не происходило, необходимо четко следовать правильной технологии исправления.

Пошаговая инструкция по устранению дублей и восстановлению связей

Выполним процедуру исправления последовательно. Перед началом любых массовых корректировок данных обязательно создайте резервные копии (выгрузки .dt) обеих баз данных (БП и ЗУП)!

Шаг 1. Отключение даты запрета изменения данных

Поскольку нам потребуется переписать ссылки на физических лиц в уже проведенных документах (возможно, за прошлые месяцы), в обеих базах необходимо временно отключить дату запрета изменения данных. Перейдите в раздел Администрирование — Настройки пользователей и прав — Даты запрета изменения и временно снимите флажок или сдвиньте дату назад.

Шаг 2. Заполнение служебных реквизитов физических лиц

Чтобы исключить проблему с незаполненными служебными полями, проанализируем справочник физических лиц. Рекомендуется принудительно перезаписать элементы справочника ФизическиеЛица в обеих базах. Это можно сделать с помощью группового изменения реквизитов или написав простую обработку. Рассмотрим пример кода на встроенном языке 1С для перезаписи объектов:


Выборка = Справочники.ФизическиеЛица.Выбрать();
Пока Выборка.Следующий() Цикл
    Если НЕ Выборка.ЭтоГруппа Тогда
        ОбъектФизЛицо = Выборка.ПолучитьОбъект();
        Попытка
            // Метод Записать() принудительно рассчитывает поля "НаименованиеСлужебное", "ФИО" и др.
            ОбъектФизЛицо.Записать();
        Исключение
            Сообщить("Ошибка записи объекта " + Выборка.Ссылка + ": " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
КонецЦикла;

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

Шаг 3. Объединение дублей в «1С:Бухгалтерии»

Теперь перейдем к непосредственному схлопыванию дублей в базе БП 3.0:

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

Шаг 4. Восстановление и корректировка регистра соответствий

После удаления дубликатов GUID удаленного физического лица в БП исчез. Но в ЗУП этот сотрудник все еще связан со старым (удаленным) идентификатором. Нам необходимо привязать верный GUID «оригинала» из БП к карточке физического лица в ЗУП. Сделаем это через регистр сведений СоответствияОбъектовИнформационныхБаз.

Выясним правильный GUID оригинального физлица в БП. Для этого можно воспользоваться любой консолью запросов или стандартной функцией получения навигационной ссылки:

  1. В БП откройте карточку физического лица (оригинала), нажмите на значок «Получить ссылку» в правом верхнем углу окна. Ссылка выглядит примерно так: e1cib/data/Справочник.ФизическиеЛица?ref=810c00155d04010111e1bf88f1ab212a.
  2. Часть строки после ref= — это и есть уникальный шестнадцатеричный идентификатор (GUID) объекта в БП.
  3. В базе ЗУП перейдите в меню Функции для технического специалиста (или через Все функции) и откройте регистр сведений Соответствия объектов информационных баз.
  4. Найдите запись, которая соответствует нашему узлу обмена с БП и требуемому физическому лицу.
  5. В поле «Уникальный идентификатор приемника» (которое хранит GUID из БП) вставьте скопированный ранее верный GUID оригинального физлица БП.
  6. Сохраните запись регистра.

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

  1. Перейдите в раздел Администрирование — Синхронизация данных — Настройки синхронизации.
  2. Откройте ссылку «Предупреждения».
  3. Перейдите на вкладку «Конфликты» или «Незаполненные реквизиты».
  4. Найдите там элементы справочника физических лиц и нажмите кнопку «Пересмотреть» или «Сопоставить вручную». В открывшейся интерактивной форме укажите правильные пары соответствия объектов. Система сама перезапишет регистр соответствий верными идентификаторами.

Шаг 5. Принудительная отправка данных и проверка

Чтобы зафиксировать изменения и убедиться, что при следующем обмене базы не создадут новые дубли, выполним следующие действия:

  1. В ЗУП зайдите в настройки синхронизации данных, выберите нужный сценарий обмена и нажмите кнопку «Состав отправляемых данных» (значок с синей стрелкой).
  2. Найдите в списке справочник Физические лица, нажмите правой кнопкой мыши и выберите «Зарегистрировать к отправке» (можно зарегистрировать конкретных измененных сотрудников).
  3. Запустите сеанс синхронизации данных.
  4. После завершения обмена проверьте документы отражения зарплаты и кассовые документы в БП. Все ссылки должны отображаться корректно, без битых записей 🚩 <Объект не найден...> и без появления новых дублирующихся строк.

Профилактика повторного появления дублей

Для предотвращения подобных инцидентов в будущем рекомендуем внедрить несколько простых правил работы с базами данных:

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

← На главную