Как в 1С:ЗУП 2.5 отобрать сотрудников, отработавших полный месяц без отклонений

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

В практике разработки отчетов и обработок для конфигурации «Зарплата и Управление Персоналом» (редакция 2.5) часто возникает задача: получить список сотрудников, которые отработали полный расчетный период без каких-либо отклонений (больничных, отпусков за свой счет или ежегодных отпусков, прогулов) и без кадровых перемещений вроде приема или увольнения в середине месяца.

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

Особенности и сложности задачи

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

  1. Разнообразие графиков работы и суммированный учет. При сменных графиках или индивидуальных графиках работы норма времени рассчитывается индивидуально для каждого сотрудника. Сравнение с базовым 5-дневным графиком приведет к искажению результатов.
  2. Прием и увольнение внутри месяца. Если сотрудник принят 15-го числа и отработал все оставшиеся рабочие дни месяца без неявок, его фактическое отработанное время совпадет с нормой за период его работы в организации. Однако весь календарный месяц он отработанным не является.
  3. Разделение данных по различным регистрам. Информация о кадровом состоянии, фактических начислениях и зарегистрированных отклонениях хранится в разных регистрах сведений и расчета.

Способ 1. Сравнение фактической отработки и нормы в регистре расчета

Рассмотрим базовый подход, основанный на анализе данных регистра расчета ОсновныеНачисленияРаботниковОрганизаций. В этом регистре присутствуют реквизиты времени, позволяющие сопоставить отработанные дни или часы с нормой.

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


ВЫБРАТЬ
	Начисления.Сотрудник КАК Сотрудник,
	Начисления.Организация КАК Организация
ИЗ
	РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Начисления
ГДЕ
	Начисления.ПериодРегистрации = &ПериодРегистрации
	И Начисления.ВидРасчета.ВидВремени = ЗНАЧЕНИЕ(Перечисление.ВидыВремени.Рабочее)
ГРУППИРОВАТЬ ПО
	Начисления.Сотрудник,
	Начисления.Организация
ИМЕЮЩИЕ
	СУММА(Начисления.ОтработаноВремениВДнях) = СУММА(Начисления.НормаВремениВДнях)

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

Способ 2. Исключение неявок через регистрацию состояний и начислений

Более надежный подход — искать сотрудников методом исключения тех, у кого за проверяемый период зафиксированы отклонения или неявки. Для этого проанализируем виртуальные таблицы и регистр сведений СостояниеРаботниковОрганизаций.

Разберем по шагам логику построения такого запроса:

  1. Выбираем всех работающих сотрудников организации на начало и конец периода.
  2. Исключаем сотрудников, у которых в регистре сведений СостояниеРаботниковОрганизаций есть записи со состояниями, отличными от «Работает» (например, «Находится в ежегодном отпуске», «Болен» и т. д.).
  3. Исключаем сотрудников, имеющих записи по видам расчета категории «Отклонение» в регистре ОсновныеНачисленияРаботниковОрганизаций.

ВЫБРАТЬ РАЗЛИЧНЫЕ
	ОсновныеЗаписи.Сотрудник КАК Сотрудник
ИЗ
	РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеЗаписи
ГДЕ
	ОсновныеЗаписи.ПериодРегистрации = &ПериодРегистрации
	И НЕ ОсновныеЗаписи.Сотрудник В
		(ВЫБРАТЬ РАЗЛИЧНЫЕ
			Отклонения.Сотрудник
		ИЗ
			РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Отклонения
		ГДЕ
			Отклонения.ПериодРегистрации = &ПериодРегистрации
			И Отклонения.ВидРасчета.Категория = ЗНАЧЕНИЕ(Перечисление.КатегорииРасчетов.Отклонение))

Способ 3. Проверка кадровой истории (прием и увольнение)

Чтобы убедиться, что сотрудник отработал полный месяц с первого по последнее число, обязательно проанализируем регистр сведений РаботникиОрганизаций. Это исключит ситуацию, когда новый сотрудник поступил на работу в середине месяца и отработал свою усеченную норму без больничных.

Выясним правильные условия для проверки дат приема и увольнения:

Использование готовых алгоритмов типовой конфигурации

Если требуется реализовать сложный отчет на СКД, можно обратиться к опыту разработчиков фирмы «1С». Подобный алгоритм определения полностью отработавших месяц сотрудников реализован в модулях регламентированной статистической отчетности — в частности, в форме № 57-Т.

Изучение запросов из состава отчета 57-Т позволит учесть все редкие случаи (вахтовый метод, суммированный учет рабочего времени, внутрисменные отклонения) и получить максимально точный результат в 1С:ЗУП 2.5.

← На главную