Как исключить или ограничить выгрузку подразделений при синхронизации ЗУП 3.1 и БП 3.0?

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

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

Причина автоматической выгрузки подразделений

Прежде всего, разберем механику процесса. Синхронизация данных в современных решениях 1С построена на формате Enterprise Data. Когда вы выгружаете документ (например, ОтражениеЗарплатыВБухучете или ВедомостьНаВыплатуЗарплаты), система анализирует все ссылки на справочники, указанные в этом документе. Если в документе заполнено поле Подразделение, программа обязана передать этот объект, чтобы сохранить целостность данных. Если объект не будет найден в базе-приемнике по уникальному идентификатору (GUID) или настроенному соответствию, 1С создаст новый элемент. Именно поэтому простая «отмена сопоставления» не помогает: система видит «пустое место» и заполняет его новой копией из источника.

Решение 1: Ручное сопоставление через регистр сведений

Проанализируем самый надежный способ «схлопывания» структуры подразделений без изменения программного кода. Если мы не хотим, чтобы «Отдел управления персоналом» и «Служба безопасности» создавались в БП как отдельные сущности, мы можем принудительно сопоставить их с одним общим подразделением (например, «Администрация»).

Для этого выполним следующие шаги:

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

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

Решение 2: Изменение детализации выгрузки (Сводно vs Детально)

Выясним причину, по которой программа так настойчиво требует передачи подразделений. В настройках синхронизации (раздел Администрирование — Синхронизация данных — Настройки синхронизации) есть важный переключатель: «С детализацией по сотрудникам» или «Сводно по сотрудникам».

Рассмотрим последствия выбора режима «Сводно по сотрудникам»:

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

Решение 3: Настройка правил регистрации данных

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

Проанализируем действия:

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

Однако будьте осторожны: если подразделение указано в документе как обязательный реквизит, система все равно попытается передать его «по ссылке». В результате в БП может возникнуть ситуация Объект не найден, если объект ранее не был сопоставлен. Поэтому данный метод лучше комбинировать с ручным сопоставлением из Решения 1.

Решение 4: Отключение учета по подразделениям в БП

Если в «Бухгалтерии предприятия» вам в принципе не нужна аналитика по подразделениям на счетах затрат (например, на 20 или 26 счетах), мы можем изменить настройки самой конфигурации-приемника.

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

Решение 5: Использование расширений (для программистов)

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

Разберем пример логики, которую можно реализовать в расширении на стороне ЗУП в модуле менеджера обмена или через подписку на событие:


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

Более продвинутый способ — перехват процедуры ПриОтправкеДанных в формате Enterprise Data. В момент формирования XML-пакета можно программно подменять ссылку на подразделение на «пустую» или на «дефолтное» подразделение. Таким образом, в файл обмена всегда будет уходить идентификатор одного и того же головного подразделения, независимо от того, что указано в документе ЗУП.

Резюме и рекомендации

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

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

← На главную