Почему не синхронизируются должности сотрудников при обмене ЗУП – БП и как это исправить?

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

При переходе на расчет заработной платы во внешней программе 1С:Зарплата и управление персоналом (ЗУП 3.1) многие пользователи сталкиваются с неприятной особенностью: в программе 1С:Бухгалтерия предприятия (БП 3.0) в печатных формах документов (например, в авансовых отчетах или доверенностях) перестают отображаться должности сотрудников. Это происходит потому, что типовой обмен данными между этими конфигурациями по умолчанию настроен на синхронизацию справочника ФизическиеЛица, в то время как сведения о должностях хранятся в справочнике Сотрудники и связанных с ним кадровых документах, которые в БП при интеграции с ЗУП обычно не переносятся. Эффективно исправить печать должностей в Авансовом отчете и Доверенности можно с помощью специализированных расширений, восстанавливающих кадровый учет в базе БП.

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

Анализируем причину: логика разработчиков «1С»

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

В типовом сценарии обмена считается, что для формирования проводок и ведения учета по 70 и 71 счетам достаточно данных справочника ФизическиеЛица. Справочник Сотрудники в БП считается «подчиненным» кадровым приказам. Поскольку приказы (прием, перевод) создаются в ЗУП и не дублируются в БП, справочник сотрудников остается незаполненным или заполняется лишь частично, без привязки к должностям.

Способ 1: Использование «скрытых» настроек кадрового учета в БП

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

  1. Перейдем в функции технического специалиста (или через константы) и найдем настройку «Использовать кадровый учет».
  2. Включим эту константу. Это сделает активным журнал кадровых документов (приемы на работу, кадровые переводы).
  3. Для ключевых сотрудников (например, подотчетных лиц), должности которых должны попадать в печатные формы, создадим в БП упрощенный документ ПриемНаРаботу.

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

Способ 2: Модификация правил обмена через «Конвертацию данных 2.0»

Если нам необходимо автоматизировать процесс для большого количества сотрудников, разберем вариант доработки правил обмена. Типовой обмен часто использует формат КД 2.0 (XML) — для этого подойдёт синхронизация по правилам Конвертации данных 2.0. Проанализируем шаги по добавлению справочника Сотрудники в выгрузку:

  1. Загрузим типовые правила обмена из конфигурации ЗУП в конфигурацию «Конвертация данных 2.0».
  2. Создадим новое ПКО (Правило конвертации объектов) для справочника Сотрудники.
  3. Настроим поиск сотрудников по уникальному идентификатору (GUID) или по связке Наименование + ФизическоеЛицо.
  4. Добавим ПКС (Правила конвертации свойств) для переноса должности.

Чтобы упростить задачу, можно использовать уже готовые правила обмена (КД 2.0) для переноса справочника Сотрудники и должностей, адаптированные под последние релизы. Также полезно применить универсальный механизм регистрации объектов для обмена, чтобы точно контролировать, какие именно данные передаются в бухгалтерию — поможет регистрация объектов для обмена через планы обмена. Важный момент: при обновлении конфигураций 1С вам придется поддерживать эти правила в актуальном состоянии, объединяя свои правки с новыми правилами от разработчиков.

Способ 3: Использование Enterprise Data и расширенных настроек

В современных релизах ЗУП 3.1 (начиная с 3.1.14) используется формат обмена Enterprise Data. Посмотрим, как можно использовать штатные возможности этого формата — для этого подойдёт двусторонняя синхронизация через правила EnterpriseData.

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

Способ 4: Программное получение данных через HTTP-сервис или COM-соединение

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

Разберем пример реализации через HTTP-запрос. Для этого в ЗУП создается расширение с HTTP-сервисом, который по ИНН или GUID физлица возвращает его текущую должность. В БП создается внешняя печатная форма, код которой обращается к этому сервису. При разработке такой логики пригодится справочник методов Бухгалтерии предприятия 3.0 для корректного внедрения программного кода. Подобное получение должностей из ЗУП через HTTP-сервис гарантирует актуальность данных без их дублирования в бухгалтерской базе.

Пример логики запроса в коде 1С:


Функция ПолучитьДолжностьИзЗУП(ФизЛицоСсылка)
    // Настройка соединения
    НТТПЗапрос = Новый HTTPЗапрос("/v1/get_position?id=" + ФизЛицоСсылка.УникальныйИдентификатор());
    Соединение = Новый HTTPСоединение("server_zup", 8080, "login", "password");
    
    Попытка
        Ответ = Соединение.Получить(НТТПЗапрос);
        Если Ответ.КодСостояния = 200 Тогда
            Возврат Ответ.ПолучитьТелоКакСтроку();
        КонецЕсли;
    Исключение
        Возврат "Должность не определена";
    КонецПопытки;
КонецФункции

Способ 5: Синхронизация через дополнительные реквизиты

Если задача стоит максимально просто — «чтобы печаталось», проанализируем вариант с использованием Дополнительных реквизитов.

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

Подводим итоги

Мы выяснили, что отсутствие должностей в БП — это не ошибка, а особенность типовой настройки интеграции. Для решения проблемы мы можем:

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

← На главную