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

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

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

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

Разберем причину: Логика получения кадровых данных на дату

Основная причина такого поведения системы кроется в том, как программа обращается к данным регистров сведений при использовании отборов. Рассмотрим ситуацию: сотрудник принят на работу 2 августа. Мы формируем отчет за август с отбором Подразделение на конец периода.

В системе 1С:ЗУП 3.1 отчеты строятся с использованием Системы компоновки данных (СКД). Когда мы устанавливаем фильтр по подразделению, программа выполняет запрос к виртуальным таблицам кадровой истории. В зависимости от настроек отчета и версии конфигурации, запрос может выполняться на разные моменты времени:

  1. На начало периода: Программа ищет подразделение сотрудника на 01.08 00:00:00. Поскольку сотрудник принят 2-го числа, на этот момент записи в регистре о его работе в данном подразделении еще нет.
  2. На рабочую дату: В некоторых механизмах типовых отчетов «дата среза» для получения параметров сотрудника привязана к текущей Рабочей дате, установленной в настройках пользователя.

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

Решение №1: Изменение рабочей даты программы

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

  1. Перейдем в главное меню программы (кнопка с «трилистником» или сервисное меню).
  2. Выберем пункт «Настройки», затем «Параметры».
  3. В поле «Рабочая дата» установим значение на конец отчетного периода (например, 31.08).
  4. Нажмем «ОК» и заново сформируем «Расчетный листок» с прежними отборами.

Установка даты на конец месяца принудительно заставляет механизмы запросов в СКД видеть сотрудника уже принятым в подразделение. Именно это действие помогло автору вопроса решить проблему.

Решение №2: Проверка и изменение полей отбора

Выясним, какие именно поля используются в настройках отчета. В 1С:ЗУП 3.1 существует несколько похожих полей, связанных с подразделением, и они работают по-разному:

Если сотрудник не выводится, попробуем изменить поле отбора. Вместо Подразделение на конец периода выберем просто Подразделение. Проанализируем результат: если сотрудник появился, значит, проблема была именно в кадровом срезе данных.

Решение №3: Сброс настроек к стандарту

Иногда после обновлений конфигурации или некорректных действий пользователей настройки отчета могут «загрязниться» скрытыми условиями. Выполним сброс настроек:

  1. В форме отчета «Расчетный листок» нажмем кнопку «Еще».
  2. Выберем пункт «Установить стандартные настройки».
  3. Заново установим необходимый период и отбор по подразделению.

Это действие исключает влияние ошибочно сохраненных параметров, которые не видны в простом режиме настройки.

Технические нюансы для специалистов

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


ВЫБРАТЬ
    КадроваяИстория.Сотрудник,
    КадроваяИстория.Подразделение
ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&ДатаСреза, ) КАК КадроваяИстория
ГДЕ
    КадроваяИстория.Подразделение В ИЕРАРХИИ(&ВыбранноеПодразделение)

Если параметр &ДатаСреза в коде формирования отчета по какой-то причине устанавливается на начало периода (например, через НачалоПериода(ПериодОтчета, "МЕСЯЦ")), то сотрудники, принятые позже этого момента, не попадут в выборку. При использовании отбора В группе (в иерархии) система также строит дерево подразделений, и если в иерархии есть помеченные на удаление элементы, это может дополнительно усложнить ситуацию. При необходимости скорректировать логику запросов без изменения конфигурации можно использовать внешний отчет «Расчетный листок» для доработки типовых алгоритмов.

Дополнительные рекомендации

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

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

← На главную