Как настроить отбор по должности в отчете «Численность и текучесть кадров», чтобы данные после перевода отображались корректно?

Пользователь 1С v8.3 (Управляемые формы)
← На главную

При работе в программе 1С:Зарплата и управление персоналом 8.3 (редакция 3.1) пользователи часто сталкиваются с ситуацией, когда типовые отчеты по численности выводят избыточные данные. Типичный пример: сотрудник сменил должность в середине отчетного периода (например, перевелся с позиции врача-терапевта на административную должность). При формировании отчета «Численность и текучесть кадров» с фильтром по старой должности «Терапевт», программа продолжает включать этого сотрудника в отчет даже в те месяцы, когда он уже занимал другую позицию. Это приводит к завышению списочной численности и искажению кадровой статистики.

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

Почему стандартный отбор работает «неправильно»?

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

Рассмотрим ситуацию: отчет формируется за полугодие. Сотрудник был терапевтом с января по апрель, а в мае перевелся. Если мы ставим условие Должность Равно "Терапевт" на уровне всего отчета, СКД находит записи, соответствующие этому условию. Поскольку сотрудник хотя бы раз за указанный период занимал эту должность, он попадает в итоговый набор данных. Далее отчет начинает распределять данные по месяцам, и из-за особенностей архитектуры запроса в старых релизах (таких как 3.1.10) или специфических настроек группировок, строка сотрудника может «продублироваться» в последующие месяцы, так как он уже прошел «входной фильтр» отчета.

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

Пошаговое решение: перенос отбора на уровень группировки

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

Рассмотрим алгоритм действий подробно:

  1. Откроем отчет «Численность и текучесть кадров» (раздел Кадры — Кадровые отчеты).
  2. Нажмем кнопку «Настройки...». В открывшемся окне выберем вид настроек «Расширенный» (внизу окна).
  3. Перейдем на вкладку «Структура». Здесь мы видим, как сгруппированы данные в отчете. По умолчанию типовой отчет может не содержать детальной группировки по сотрудникам, выводя только общие итоги по подразделениям или периодам.
  4. Нам необходимо добавить группировку по сотруднику. Для этого нажмем правую кнопку мыши на текущей структуре и выберем «Добавить», указав поле Сотрудник.
  5. Теперь самое важное: выделим созданную строку «Сотрудник» в списке структуры. В нижней части окна (настройки для выбранного элемента) перейдем на вкладку «Отбор».
  6. Именно здесь, внутри настроек группировки Сотрудник, добавим новый элемент отбора: поле Должность, вид сравнения Равно, значение — нужная нам должность (например, Терапевт).
  7. При этом важно убедиться, что на основной вкладке «Отборы» (которая относится ко всему отчету) отбор по должности отсутствует или выключен.

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

Дополнительная проверка через группировку по должностям

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

  1. В настройках структуры отчета добавим вложенную группировку: сначала Сотрудник, а под ним — Должность.
  2. Сформируем отчет. Мы увидим, что с января по апрель под фамилией сотрудника будет значиться «Терапевт», а начиная с мая — его новая должность.
  3. Это подтверждает, что программа правильно видит кадровый перевод. После проверки можно вернуться к предыдущему шагу и оставить только нужный отбор по конкретной должности внутри группировки.

Важные нюансы и возможные ошибки

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

1. Использование периодических показателей. В расширенных настройках СКД иногда доступны поля типа Должность (на конец периода) или Должность (периодический показатель). Если типовой отбор не срабатывает даже внутри группировки, попробуйте поискать в доступных полях те, которые явно привязаны к дате среза.

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

3. Сброс настроек. Если вы долго экспериментировали с настройками и отчет начал выдавать «ерунду» (как выразился автор вопроса), рекомендуется выполнить полный сброс: Кнопка "Еще" — Установить стандартные настройки. После этого повторите настройку фильтра внутри группировки с чистого листа.

4. Особенности релиза. В старых релизах (линейка 3.1.10 и ранее) встречались ошибки в текстах запросов типовых отчетов, когда данные «залипали» на начало периода. Если перевод сотрудника был выполнен первым числом месяца (01.05), попробуйте для проверки сформировать отчет не за полугодие, а отдельно за май. Если в отдельном отчете за май сотрудника-терапевта нет, значит, проблема именно в механизме «сворачивания» данных за длительный период, который лечится именно описанным выше способом (настройкой отбора на уровне группировки).

Резюме

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

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

← На главную