Синхронизация данных между конфигурациями «Зарплата и управление персоналом 3.1» (ЗУП) и «Бухгалтерия предприятия 3.0» (БП) — это стандартный процесс, который, тем не менее, часто преподносит сюрпризы технического характера. Одной из самых распространенных проблем является невозможность точечной регистрации элемента справочника ФизическиеЛица для выгрузки. Вы выбираете объект в обработке «Регистрация изменений для обмена», нажимаете «Зарегистрировать», но программа выдает обескураживающее сообщение: «Зарегистрировано 0 объектов из 1».
В этой статье мы подробно разберем, почему типовые правила ведут себя именно так, и рассмотрим несколько эффективных способов решения проблемы — от простых «бухгалтерских хитростей» до изменения логики работы правил регистрации.
Для начала проанализируем ситуацию с точки зрения архитектуры обмена 1С. В типовых правилах синхронизации для справочника ФизическиеЛица установлен режим «Выгружать при необходимости». Это сделано намеренно, чтобы не перегружать базу бухгалтерии данными всех соискателей, договорников или сотрудников, по которым еще не было никаких движений (начислений, выплат, кадровых приказов).
Проблема заключается в том, что при использовании COM-соединения или классического XML-обмена механизм регистрации проверяет условия, заложенные в правилах. Если на физическое лицо нет ссылок в документах, которые уже включены в обмен (например, ОтражениеЗарплатыВБухучете или ВедомостьНаВыплатуЗарплаты), система блокирует регистрацию одиночного объекта, считая его «лишним» для базы-приемника.
Рассмотрим способы, как можно обойти это ограничение.
Это самый безопасный способ, который не требует вмешательства в программный код или правила регистрации. Разберем его по шагам:
ДоговорЗаймаСотруднику или просто создают «пустую» ВедомостьНаВыплатуЗарплаты.ФизическиеЛица автоматически зарегистрируется на узле обмена вместе с документом.Этот метод хорош тем, что он полностью соответствует логике разработчиков 1С: объект выгружается только тогда, когда он «нужен» какому-то документу.
Если вам требуется массово выгружать физических лиц без привязки к документам, рассмотрим более радикальный метод — изменение правил регистрации. Будьте осторожны: этот метод требует понимания структуры XML-файлов правил.
Выполним следующие действия:
ФизическиеЛица. Нам нужно найти строку СправочникСсылка.ФизическиеЛица.РежимВыгрузки. Скорее всего, там будет указано РежимВыгрузкиПриНеобходимости.РежимВыгрузкиСправочников (в некоторых версиях правил нужно просто очистить значение или поставить Всегда, в зависимости от версии платформы и БСП).После этой манипуляции система позволит регистрировать любые карточки физлиц вручную через обработку регистрации изменений.
Проанализируем ситуацию: иногда регистрация не проходит, так как программа «не видит» связи между объектами в разных базах. Как отметили участники обсуждения, можно попробовать обмануть систему через регистр сведений СоответствияОбъектовИнформационныхБаз.
Посмотрим, как это сделать вручную:
СоответствияОбъектовИнформационныхБаз (через «Все функции» или «Функции для технического специалиста»).УникальныйИдентификаторИсточника и УникальныйИдентификаторПриемника следует очистить (или заполнить идентификатором из ЗУП, если вы его знаете).Важно: При такой ручной манипуляции сопоставление при обмене будет происходить по полям поиска (ФИО, ИНН, СНИЛС). Убедитесь, что в ЗУП заполнены ключевые поля, иначе в БП может создаться дубль или «пустая» карточка без важных реквизитов.
Если вы все еще используете старый обмен через COM-соединение, рекомендуем рассмотреть переход на современный формат Enterprise Data (ED). Рассмотрим преимущества этого подхода:
Сопоставление данных в ED работает более прозрачно.Если вы разработчик и хотите решить проблему «раз и навсегда» для конкретной базы, можно воспользоваться механизмом расширений. Мы можем вмешаться в процедуру перед записью или в модуль менеджера справочника, чтобы принудительно регистрировать объект на узле обмена.
Пример логики на языке 1С (концептуально):
Процедура ПередЗаписью(Отказ)
// Проверяем, что запись происходит не в режиме обмена
Если Не ОбменДанными.Загрузка Тогда
УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("БП 3.0");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Использование ПланыОбмена.ЗарегистрироватьИзменения напрямую игнорирует некоторые фильтры правил регистрации, которые срабатывают при интерактивной работе в обработке «Регистрация изменений для обмена».
Ситуация, когда «Зарегистрировано 0 объектов из 1», не является программной ошибкой в чистом виде — это особенность типового проектирования обмена между ЗУП и БП. Система защищает бухгалтерскую базу от «мусорных» записей.
Для быстрого решения проблемы используйте Метод №1 (фиктивный документ), а для системного изменения логики — Метод №2 (правка XML-правил). И всегда помните о важности заполнения СНИЛС и ИНН: именно по ним система будет искать соответствия в базе-приемнике, чтобы не допустить дублирования физических лиц.