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