При работе в программе 1С:Зарплата и управление персоналом 3.1 бухгалтеры часто сталкиваются с ситуацией, когда при формировании отчета «Расчетный листок» по конкретному подразделению некоторые сотрудники «выпадают» из списка. При этом, если убрать отбор по подразделению или оставить отбор только по самому сотруднику, отчет формируется корректно, данные о начислениях и выплатах присутствуют. Особенно часто это проявляется у новых сотрудников, принятых на работу не с первого числа месяца.
Разберем детально, почему так происходит, проанализируем внутренние механизмы работы отчетов и найдем способы решения этой проблемы.
Основная причина такого поведения системы кроется в том, как программа обращается к данным регистров сведений при использовании отборов. Рассмотрим ситуацию: сотрудник принят на работу 2 августа. Мы формируем отчет за август с отбором Подразделение на конец периода.
В системе 1С:ЗУП 3.1 отчеты строятся с использованием Системы компоновки данных (СКД). Когда мы устанавливаем фильтр по подразделению, программа выполняет запрос к виртуальным таблицам кадровой истории. В зависимости от настроек отчета и версии конфигурации, запрос может выполняться на разные моменты времени:
Проанализируем ситуацию: если рабочая дата в программе установлена, например, на 1 августа, а отчет формируется за весь август, программа при определенных условиях может «срезать» кадровые данные именно на начало месяца. В результате сотрудник, не состоявший в штате на 1-е число, игнорируется фильтром по подразделению.
Как показывает практика и обсуждение на форумах, самым быстрым и эффективным решением является установка рабочей даты на последний день отчетного месяца. Рассмотрим, как это сделать по шагам:
Установка даты на конец месяца принудительно заставляет механизмы запросов в СКД видеть сотрудника уже принятым в подразделение. Именно это действие помогло автору вопроса решить проблему.
Выясним, какие именно поля используются в настройках отчета. В 1С:ЗУП 3.1 существует несколько похожих полей, связанных с подразделением, и они работают по-разному:
Начисление зарплаты и взносов подразделение заполнено верно, отбор по этому полю должен срабатывать всегда, независимо от даты приема.КадроваяИсторияСотрудников. Именно оно чувствительно к дате среза.Если сотрудник не выводится, попробуем изменить поле отбора. Вместо Подразделение на конец периода выберем просто Подразделение. Проанализируем результат: если сотрудник появился, значит, проблема была именно в кадровом срезе данных.
Иногда после обновлений конфигурации или некорректных действий пользователей настройки отчета могут «загрязниться» скрытыми условиями. Выполним сброс настроек:
Это действие исключает влияние ошибочно сохраненных параметров, которые не видны в простом режиме настройки.
Для понимания того, как система обрабатывает данные «под капотом», приведем пример логики, которая может отрабатывать в запросе СКД при получении кадровых данных. Программа обращается к виртуальной таблице СрезПоследних регистра сведений КадроваяИсторияСотрудников:
ВЫБРАТЬ
КадроваяИстория.Сотрудник,
КадроваяИстория.Подразделение
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&ДатаСреза, ) КАК КадроваяИстория
ГДЕ
КадроваяИстория.Подразделение В ИЕРАРХИИ(&ВыбранноеПодразделение)
Если параметр &ДатаСреза в коде формирования отчета по какой-то причине устанавливается на начало периода (например, через НачалоПериода(ПериодОтчета, "МЕСЯЦ")), то сотрудники, принятые позже этого момента, не попадут в выборку. При использовании отбора В группе (в иерархии) система также строит дерево подразделений, и если в иерархии есть помеченные на удаление элементы, это может дополнительно усложнить ситуацию. При необходимости скорректировать логику запросов без изменения конфигурации можно использовать внешний отчет «Расчетный листок» для доработки типовых алгоритмов.
Если вышеуказанные способы не помогают, рекомендуем выполнить следующие действия:
Прием на работу. Это обновит записи в регистре Текущие кадровые данные сотрудников, который часто используется для оптимизации отчетов.В группе, попробуем временно сменить его на Равно и выбрать конкретное подразделение. Если при Равно сотрудник выводится, а при В группе — нет, значит, проблема в иерархии справочника Подразделения (возможно зацикливание или дублирование).Обновление данных оформителем (доступна через Функции для технического специалиста), которая актуализирует вспомогательные регистры отчетности.Таким образом, мы выяснили, что наиболее вероятной причиной отсутствия сотрудника в отчете является несовпадение даты приема с датой, на которую отчет анализирует кадровый состав при наложенном фильтре. Использование корректной рабочей даты или смена полей отбора позволяет решить эту проблему без доработки типовой конфигурации.