В процессе ведения кадрового учета в программе «1С:Зарплата и управление персоналом 3.1» часто возникает задача оперативно получить данные о численности персонала в разрезе должностей. Эту задачу можно решить несколькими способами: от простой настройки пользовательских отчетов до написания программного кода. Рассмотрим подробно каждый из вариантов, проанализируем их особенности и выясним, какой метод будет наиболее эффективным в зависимости от ваших целей.
Если нам необходимо получить список «по головам» (количество физических лиц), наиболее простым и надежным инструментом станет отчет «Штатные сотрудники». По умолчанию он выводит список сотрудников, но с помощью гибких настроек системы компоновки данных (СКД) мы можем легко превратить его в сводную таблицу. При необходимости можно воспользоваться отчетом штатное расписание Т-3 с выводом сотрудников по штатным позициям.
Разберем по шагам, как это сделать:
Должность.Сотрудник. Для поля Сотрудник в колонке «Роль» (если доступно) или через механизм агрегатных функций будет рассчитано количество.Проанализируем ситуацию, когда нам важно знать не только количество людей, но и количество занятых ставок. Для этих целей в программе предусмотрен отчет «Заполненность штатного расписания». Важно понимать разницу: один сотрудник может занимать 0.5 ставки, или наоборот, одна позиция может быть совмещена несколькими людьми. Для этой задачи также подойдет аналитический отчет по укомплектованности и вакансиям штатного расписания.
Рассмотрим, как адаптировать этот отчет:
Должность (или Позиция, если важна привязка к подразделению).Если стандартные отчеты кажутся перегруженными, воспользуемся «Универсальным отчетом». Он позволяет обратиться напрямую к данным регистров без лишних надстроек. Выясним, как его настроить:
Должность.Количество различных по полю Сотрудник.Для разработчиков, которым необходимо получить эти данные внутри кода (например, для обработки или заполнения документа), наиболее очевидным кажется использование запроса. Однако здесь есть подводные камни. Посмотрим на пример запроса, который учитывает итоги по должностям:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КадроваяИстория.Должность КАК Должность,
| КадроваяИстория.Сотрудник КАК Сотрудник
|ИЗ
| РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Период, ) КАК КадроваяИстория
|ГДЕ
| КадроваяИстория.Сотрудник.В Архиве = ЛОЖЬ
|ИТОГИ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сотрудник)
|ПО
| Должность";
Запрос.УстановитьПараметр("Период", ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
Важный нюанс: при обходе такого запроса в коде 1С, чтобы получить только количество сотрудников по каждой должности, не проваливаясь в детальные записи каждого человека, необходимо использовать правильный метод обхода группировок:
ВыборкаДолжность = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДолжность.Следующий() Цикл
// Здесь мы получаем название должности и количество сотрудников
НазваниеДолжности = ВыборкаДолжность.Должность;
КоличествоЧеловек = ВыборкаДолжность.Сотрудник; // В агрегатном поле ИТОГОВ будет число
Сообщить(НазваниеДолжности + ": " + КоличествоЧеловек);
КонецЦикла;
Проанализируем рекомендации опытных специалистов. В конфигурации ЗУП 3.1 структура регистров довольно сложна (используются интервальные регистры, данные о состояниях и т.д.). Прямой запрос к СрезуПоследних регистра КадроваяИсторияСотрудников может вернуть неактуальные данные, если не учитывать, уволен ли сотрудник.
Поэтому правильнее использовать функции общего модуля КадровыйУчет. Рассмотрим пример получения кадровых данных:
КадровыйУчет.СотрудникиОрганизации позволяет получить список работающих сотрудников на дату с учетом всех кадровых изменений.КадровыйУчет.КадровыеДанныеСотрудников поможет выгрузить таблицу, содержащую сотрудников и их должности, которую затем легко свернуть по должности с суммированием количества.Применение типовых функций гарантирует, что вы не забудете отсечь уволенных сотрудников и правильно обработаете ситуации с внутренним совместительством.
Подведем итог: при подсчете сотрудников всегда обращайте внимание на следующие аспекты:
Данные состояний сотрудников.Должности и справочником Позиции штатного расписания.