Почему в 1С:ЗУП 3.1 при начислении зарплаты по головному подразделению не заполняются сотрудники подчиненных подразделений?

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

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

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

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

Рассмотрим классическую иерархическую структуру справочника Подразделения, с которой часто работают крупные организации:

  1. Офис (головное подразделение первого уровня)
    1. Администрация (подчиненное подразделение второго уровня)
      1. Бухгалтерия (подчиненное подразделение третьего уровня)

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

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

Выясняем причину: глобальная оптимизация расчетов в ЗУП 3.1.9

Для того чтобы понять, почему программа ведет себя столь непоследовательно, обратимся к технической истории развития конфигурации. В релизе 3.1.9 разработчики фирмы «1С» провели масштабную реорганизацию программного кода, отвечающего за расчет заработной платы и НДФЛ. Целью этой оптимизации было ускорение проведения документов на крупных информационных базах с большим количеством сотрудников.

В рамках этой оптимизации был полностью переписан внутренний механизм построения запросов к базе данных. Однако в первых сборках ветки 3.1.9 (включая популярный релиз 3.1.9.159) новые алгоритмы содержали серьезную логическую ошибку в части работы с иерархическими структурами справочников.

При заполнении документа по подразделению программа должна использовать оператор В ИЕРАРХИИ языка запросов 1С. Из-за некорректной оптимизации построения временных таблиц в динамических запросах фильтрация по подразделениям начала работать со сбоями. Программа путалась в уровнях вложенности справочника Подразделения: промежуточные уровни (в нашем примере — «Администрация») ошибочно отсекались фильтрами оптимизированного алгоритма, в то время как конечные листья дерева иерархии («Бухгалтерия») продолжали обрабатываться корректно.

Поскольку отчеты (расчетные листки) используют другие, более простые механизмы компоновки данных и виртуальные таблицы, они не были затронуты этой «оптимизацией» и продолжали выводить данные правильно. Это и вводило пользователей в заблуждение.

Способ решения №1: Включение расчета без оптимизации (быстрый обход ошибки)

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

Разберем по шагам, как активировать этот режим:

  1. Перейдите в раздел меню Настройка.
  2. Выберите пункт Расчет зарплаты.
  3. Прокрутите открывшееся окно настроек в самый низ.
  4. Найдите и установите флажок Выполнять расчет зарплаты без оптимизации.
  5. Сохраните настройки.

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

Старый алгоритм выполняет сбор данных медленнее на высоконагруженных базах, но делает это абсолютно надежно и безошибочно. После установки этой настройки документ Начисление зарплаты и взносов при выборе головного подразделения «Офис» сразу же корректно заполнится всеми сотрудниками нижестоящих подразделений.

Способ решения №2: Обновление конфигурации (рекомендуемый метод)

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

Данная проблема с иерархией подразделений была полностью устранена в релизе 3.1.9.187 и во всех последующих версиях. При обновлении конфигурации до актуального релиза новые оптимизированные запросы начинают корректно обрабатывать оператор В ИЕРАРХИИ, и необходимость в использовании обходной галочки отпадает.

С какими еще проблемами «оптимизации» можно столкнуться в ЗУП 3.1.9?

Если вы работаете на ранних релизах ветки 3.1.9 и столкнулись с ошибкой подразделений, имейте в виду, что новый оптимизированный алгоритм расчетов в этих версиях может вызывать и другие критические сбои:

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

Что важно знать при переходе на новые версии ЗУП 3.1

Обратите внимание на то, как развивалась ситуация с этой настройкой в последующих версиях программы:

Таким образом, если вы временно решили проблему установкой галочки в версии 3.1.9, помните, что при переходе на современные версии (3.1.18, 3.1.23, 3.1.27 и далее) программа в любом случае вернется к работе по оптимизированному алгоритму, но уже без ошибок заполнения подразделений.

← На главную