Как заполнить справочник «Структура предприятия» в 1С:ЗУП 3.1 для выгрузки в ERP?

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

При настройке интеграции и обмена данными между «1С:Зарплата и управление персоналом 3.1» и «1С:ERP Управление предприятием» специалисты часто сталкиваются со следующей проблемой: документ Отражение зарплаты в финансовом учете требует заполнения управленческих подразделений. Однако в 1С:ЗУП версии ПРОФ справочник Структура предприятия остается пустым, а реквизит Источник на форме элемента недоступен для ручного редактирования.

Разберем детально, почему возникает эта коллизия, как устроена взаимосвязь справочников и какими способами можно правильно синхронизировать управленческую и регламентированную структуры.

Выясним причину системного поведения

В архитектуре прикладных решений 1С реализовано четкое разделение двух видов учета:

  1. Регламентированная структура — представлена справочником Подразделения организаций. Эти подразделения привязаны к конкретным юридическим лицам и используются для кадровых приказов, табельного учета, начисления зарплаты и отчетности в контролирующие органы.
  2. Управленческая структура — представлена справочником Структура предприятия. Она описывает сквозную иерархию подразделений бизнеса без жесткой привязки к организациям компании.

В версии 1С:ЗУП ПРОФ ведение параллельной управленческой структуры штатно заблокировано: метаданные справочника присутствуют, но скрыты и отключены функциональной опцией ИспользоватьЗарплатаКадрыКорпоративнаяПодсистемы. Полноценная работа с двумя независимыми деревьями подразделений предусмотрена только в версиях КОРП, ERP и КА.

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

Способ 1. Использование типовой процедуры общего модуля

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

По умолчанию в начале процедуры стоят проверки функциональных опций:


Если Не ПолучитьФункциональнуюОпцию("ИспользоватьЗарплатаКадрыКорпоративнаяПодсистемы") Тогда
    Возврат;
КонецЕсли;

Если ПолучитьФункциональнуюОпцию("СтруктураПредприятияНеСоответствуетСтруктуреЮридическихЛиц") Тогда
    Возврат;
КонецЕсли;

В версии ПРОФ первая опция всегда возвращает значение Ложь, из-за чего обновление не выполняется. Чтобы инициировать заполнение справочника, рассмотрим два пути:

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

Способ 2. Автоматизация через расширение конфигурации

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

Создадим расширение с назначением Адаптация или Дополнение и переопределим процедуру модуля с помощью аннотации &Вместо или подпишемся на события записи справочника ПодразделенияОрганизаций.

Посмотрим на пример логики синхронизации, которую можно реализовать в расширении или внешней обработке:


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

Такой подход обеспечивает корректное заполнение реквизита Источник, сохраняет иерархическую соподчиненность элементов и не нарушает целостность данных информационной базы.

Способ 3. Перенос сопоставления на сторону обмена с ERP

Проанализируем альтернативный архитектурный вариант. Если в ЗУП ПРОФ управленческий учет не ведется и искусственное наполнение служебного справочника нежелательно, правильнее всего вынести логику сопоставления в правила конвертации данных (КД 2) или обработчики EnterpriseData.

Разберем схему реализации:

  1. В документе Отражение зарплаты в бухучете выгружается регламентированное подразделение организации.
  2. В правилах конвертации для свойства Подразделение документа-приемника в ERP настраивается алгоритм поиска: по наименованию или по таблице соответствий в справочнике Структура предприятия на стороне ERP.
  3. Если подразделения в ERP и ЗУП полностью совпадают по названиям, поиск управленческого подразделения выполняется стандартным сопоставлением по наименованию в базе-приемнике без необходимости дублировать справочники в базе-источнике.

Если же предприятие планирует активно использовать сложную сквозную оргструктуру, матрицы грейдов и управленческую аналитику затрат на оплату труда непосредственно в кадровой системе, оптимальным долгосрочным решением станет штатный апгрейд конфигурации с ЗУП ПРОФ до уровня 1С:ЗУП КОРП.

← На главную