Почему в отчете среднесписочная численность за год делится не на 12 месяцев и как это исправить?

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

При формировании кадровых отчетов по расчету среднесписочной численности (ССЧ) за календарный год пользователи и разработчики нередко сталкиваются с ситуацией, когда итоговый показатель рассчитывается некорректно. Например, если подразделение или организация вели деятельность не полный год (или в последние месяцы года все сотрудники были уволены), система делит сумму среднемесячной численности не на 12 месяцев расчетного периода, а только на количество месяцев, в которых фактически присутствовали сотрудники.

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

Методология расчета среднесписочной численности

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

  1. Сначала определяется среднесписочная численность за каждый отдельный месяц: суммируется списочная численность (в пересчете на целые единицы занимаемых ставок) за каждый календарный день месяца (включая праздничные и выходные дни), после чего полученная сумма делится на общее число календарных дней в данном месяце.
  2. Далее для определения показателя за отчетный период (квартал, полугодие, 9 месяцев, год) полученные значения среднемесячной численности складываются и делятся на полное число месяцев в отчетном периоде.
  3. Если подразделение или организация работали неполный период (например, были созданы или ликвидированы в течение года, либо имели нулевой штат в определенные месяцы), полученная сумма среднемесячных показателей за месяцы фактической работы все равно всегда делится на 12 при годовом расчете.

Почему отчет на СКД выполняет деление не на 12 месяцев?

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

Среднее(СреднесписочнаяЧисленность)

Логика работы функции Среднее() в СКД заключается в вычислении среднего арифметического исключительно по тем строкам выборки, которые вернул запрос. Если по подразделению в октябре, ноябре и декабре кадровых движений и сотрудников не было, запрос не возвращает строк за эти периоды. В результате в выборке присутствуют только 9 записей (с января по сентябрь), и функция Среднее() находит сумму за 9 месяцев и делит её на 9, полностью игнорируя месяцы с нулевыми показателями.

Способ 1. Корректировка формулы на вкладке «Ресурсы» в СКД

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

Вместо стандартного вызова функции Среднее() настроим явный расчет через суммирование показателей и деление на количество месяцев.

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

Сумма(СреднесписочнаяЧисленность) / 12

Если же отчет универсальный и формируется за произвольный период, определяемый параметрами &ПериодНачала и &ПериодОкончания, воспользуемся расчетным выражением с функцией РазностьДат:


Сумма(СреднесписочнаяЧисленность) / (РазностьДат(&ПериодНачала, &ПериодОкончания, "Месяц") + 1)

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

Способ 2. Доработка текста запроса схемы компоновки данных

Другой подход заключается в обеспечении гарантированного присутствия всех периодов в результирующей выборке. Для этого доработаем запрос СКД:

  1. Сформируем в запросе вспомогательную таблицу всех месяцев отчетного периода (например, выгрузив срез дат по производственному календарю или виртуальной таблице периодов).
  2. Свяжем сформированную таблицу периодов с кадровыми данными через конструкцию ЛЕВОЕ СОЕДИНЕНИЕ.
  3. Для числовых показателей используем функцию ЕСТЬNULL(ТаблицаКадров.Численность, 0).

При таком подходе запрос вернет ровно 12 строк (для месяцев без сотрудников значение ресурса будет равно нулю), и стандартная агрегатная функция СКД Среднее(СреднесписочнаяЧисленность) отработает абсолютно корректно.

Особенности регламентированных форм

Обратим внимание, что в регламентированной статистической отчетности (в частности, в форме П-4 и годовых формах статистики) расчет среднесписочной численности реализован во встроенном программном коде регламентированных отчетов. Там деление на 12 для годовых срезов заложено на уровне алгоритма заполнения, поэтому различия в значениях между произвольным кадровым отчетом на СКД и утвержденной статотчетностью чаще всего вызваны именно описанной настройкой ресурсов СКД.

← На главную