Почему не регистрируются физические лица при обмене между ЗУП 3.1 и БП 3.0 и как это исправить?

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

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

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

Выясняем причину: логика «Выгружать при необходимости»

Для начала проанализируем ситуацию с точки зрения архитектуры обмена 1С. В типовых правилах синхронизации для справочника ФизическиеЛица установлен режим «Выгружать при необходимости». Это сделано намеренно, чтобы не перегружать базу бухгалтерии данными всех соискателей, договорников или сотрудников, по которым еще не было никаких движений (начислений, выплат, кадровых приказов).

Проблема заключается в том, что при использовании COM-соединения или классического XML-обмена механизм регистрации проверяет условия, заложенные в правилах. Если на физическое лицо нет ссылок в документах, которые уже включены в обмен (например, ОтражениеЗарплатыВБухучете или ВедомостьНаВыплатуЗарплаты), система блокирует регистрацию одиночного объекта, считая его «лишним» для базы-приемника.

Рассмотрим способы, как можно обойти это ограничение.

Способ 1. Использование фиктивного документа (Метод «Связки»)

Это самый безопасный способ, который не требует вмешательства в программный код или правила регистрации. Разберем его по шагам:

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

Этот метод хорош тем, что он полностью соответствует логике разработчиков 1С: объект выгружается только тогда, когда он «нужен» какому-то документу.

Способ 2. Редактирование правил регистрации объектов

Если вам требуется массово выгружать физических лиц без привязки к документам, рассмотрим более радикальный метод — изменение правил регистрации. Будьте осторожны: этот метод требует понимания структуры XML-файлов правил.

Выполним следующие действия:

  1. Зайдем в раздел «Администрирование» — «Синхронизация данных» — «Настройки синхронизации».
  2. Выберем нужную настройку, перейдем в «Параметры синхронизации» — «Загрузить правила регистрации объектов».
  3. Выгрузим текущие правила в файл на диск.
  4. Откроем полученный XML-файл любым текстовым редактором (лучше всего Notepad++ или VS Code).
  5. Найдем узел, отвечающий за справочник ФизическиеЛица. Нам нужно найти строку СправочникСсылка.ФизическиеЛица.
  6. Внутри этого блока найдем параметр РежимВыгрузки. Скорее всего, там будет указано РежимВыгрузкиПриНеобходимости.
  7. Заменим это значение на РежимВыгрузкиСправочников (в некоторых версиях правил нужно просто очистить значение или поставить Всегда, в зависимости от версии платформы и БСП).
  8. Сохраним файл и загрузим его обратно через интерфейс «Загрузить правила регистрации объектов».

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

Способ 3. Прямая запись в регистр соответствий

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

Посмотрим, как это сделать вручную:

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

Важно: При такой ручной манипуляции сопоставление при обмене будет происходить по полям поиска (ФИО, ИНН, СНИЛС). Убедитесь, что в ЗУП заполнены ключевые поля, иначе в БП может создаться дубль или «пустая» карточка без важных реквизитов.

Способ 4. Переход на формат Enterprise Data

Если вы все еще используете старый обмен через COM-соединение, рекомендуем рассмотреть переход на современный формат Enterprise Data (ED). Рассмотрим преимущества этого подхода:

Программный подход к решению

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

Пример логики на языке 1С (концептуально):


Процедура ПередЗаписью(Отказ)
    // Проверяем, что запись происходит не в режиме обмена
    Если Не ОбменДанными.Загрузка Тогда
        УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("БП 3.0");
        Если ЗначениеЗаполнено(УзелОбмена) Тогда
            ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Ссылка);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Использование ПланыОбмена.ЗарегистрироватьИзменения напрямую игнорирует некоторые фильтры правил регистрации, которые срабатывают при интерактивной работе в обработке «Регистрация изменений для обмена».

Подведем итоги

Ситуация, когда «Зарегистрировано 0 объектов из 1», не является программной ошибкой в чистом виде — это особенность типового проектирования обмена между ЗУП и БП. Система защищает бухгалтерскую базу от «мусорных» записей.

Для быстрого решения проблемы используйте Метод №1 (фиктивный документ), а для системного изменения логики — Метод №2 (правка XML-правил). И всегда помните о важности заполнения СНИЛС и ИНН: именно по ним система будет искать соответствия в базе-приемнике, чтобы не допустить дублирования физических лиц.

← На главную