Как предотвратить автоматическое переименование подразделений в 1С:Бухгалтерии при синхронизации с 1С:ЗУП?

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

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

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

Почему происходит «затирание» наименований при синхронизации

Для начала проанализируем техническую сторону вопроса. В формате EnterpriseData объект (например, элемент справочника Подразделения) передается целиком со всеми его реквизитами. Когда настроено сопоставление «многие к одному» (несколько подразделений ЗУП соответствуют одному подразделению в БП), система работает следующим образом:

  1. В пакете данных из ЗУП приходят данные по Подразделению №1 и Подразделению №2.
  2. Оба этих объекта сопоставлены с одним и тем же объектом «Общее подразделение» в Бухгалтерии.
  3. При обработке пакета система сначала записывает данные из Подразделения №1 в «Общее подразделение».
  4. Затем она видит Подразделение №2, которое ссылается на тот же объект в БП, и записывает его данные поверх предыдущих.

В результате «побеждает» тот объект, который в пакете обмена оказался последним. Именно поэтому наименования и коды в БП постоянно меняются, создавая дубли по названию или просто искажая учетные данные.

Способ 1. Остановка регистрации изменений в ЗУП

Рассмотрим самый простой и действенный способ, который не требует программирования. Если справочник подразделений в Бухгалтерии уже сформирован и сопоставлен, нам нужно сделать так, чтобы ЗУП перестала отправлять информацию об изменениях этих подразделений.

Выполним следующие шаги:

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

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

Способ 2. Защита реквизитов через расширение в Бухгалтерии

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

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


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

Этот код позволяет сохранить внутренние связи (УИДы), но блокирует обновление визуальных полей. Таким образом, сопоставление сохранится, а названия останутся прежними.

Способ 3. Работа с регистром «Публичные идентификаторы»

В современных версиях 1С (на базе БСП) соответствия хранятся не только в стандартном регистре Соответствие объектов информационных баз, но и в регистре Публичные идентификаторы синхронизируемых объектов. Выясним причину, почему простая очистка настроек иногда не помогает.

Если вы «снесли» настройку синхронизации, но проблема вернулась, проанализируем записи в этих регистрах:

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

Решение проблем с сопоставлением физических лиц

Часто при сбоях в синхронизации подразделений «отваливается» и сопоставление физических лиц. Посмотрим, как это исправить без ручного внесения записей в регистры. По умолчанию поиск физлиц идет по полям: ФИО + Дата рождения + ИНН/СНИЛС.

Если автоматическое сопоставление не срабатывает:

Административный подход: изменение структуры

Рассмотрим еще один вариант решения проблемы, который исключает технические конфликты. Вместо сложной схемы «многие к одному» можно создать в Бухгалтерии зеркальную структуру подразделений (1 к 1 с ЗУП). Чтобы затраты группировались нужным образом для отчетности, используйте механизмы настройки счетов учета или создайте в справочнике Подразделения иерархию (папки), где группы будут выступать в роли тех самых «укрупненных» подразделений.

Это позволит избежать перезаписи данных, так как у каждого объекта из ЗУП будет свой уникальный «двойник» в БП, и конфликта имен не возникнет. Помните, что правильная настройка аналитики на счетах затрат в БП часто позволяет собирать отчетность в любом разрезе, независимо от того, насколько детально расписаны подразделения.

← На главную