Как в 1С:ЗУП 2.5 получить список сотрудников, работающих в определенный день?

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

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

Использование регистра «Графики работы по видам времени»

Первым делом нам необходимо определить плановое рабочее время. Основным источником этой информации является регистр сведений ГрафикиРаботыПоВидамВремени. Именно здесь система хранит развернутую информацию о том, сколько часов и по какому виду времени (явка, ночные, вечерние) должен отработать сотрудник согласно своему графику.

Разберем структуру данных в этом регистре:

Рассмотрим пример логики запроса для получения плановых данных. Нам нужно выбрать записи, где ОсновноеЗначение больше нуля на искомую дату. Обратите внимание, что если в компании используются индивидуальные графики, данные в этом регистре будут иметь приоритет над общим графиком, назначенным при приеме на работу, так как при проведении документа «Индивидуальный график работы» записи в этом регистре обновляются.

Учет отклонений и состояний сотрудников

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

  1. Регистр сведений «Состояние сотрудников организаций»: Это наиболее оперативный источник. В нем фиксируются периоды отсутствия. При построении запроса необходимо проверять, не попадает ли искомая дата в интервал между ДатаНачала и ДатаОкончания. Если состояние сотрудника отлично от «Работает», его следует исключить из итогового списка.
  2. Регистр расчета «Основные начисления организаций»: Здесь хранятся фактические записи о начислениях (например, «Оклад по дням» или «Оплата больничного листа»). Именно этот регистр отвечает за вытеснение планового времени фактическим.

Алгоритм построения программного решения

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

Шаг 1. Выбираем из регистра ГрафикиРаботыПоВидамВремени всех сотрудников, у которых на нужную дату количество часов (ОсновноеЗначение) больше 0 по виду времени «Явка».

Шаг 2. Выполняем Левое соединение полученной таблицы с данными регистра СостояниеСотрудниковОрганизаций. Условие соединения должно проверять вхождение нашей даты в период действия состояния.

Шаг 3. Фильтруем результат. Если в колонке состояния обнаружено значение (отпуск, болезнь и т.д.), такой сотрудник в список «сегодня работающих» не попадает.

Пример структуры запроса (схематично):


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

Использование типовых отчетов (Т-13)

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

В коде формирования этого отчета реализованы сложные механизмы сопоставления графиков и фактических документов отклонений. Вы можете сформировать этот отчет за один конкретный день. Те сотрудники, у которых в ячейке будет стоять «Я» (Явка) с указанием часов, и являются теми, кто должен выйти на работу.

Важные нюансы: сменные графики и внутрисменные отсутствия

Рассмотрим подробнее ситуации, которые могут усложнить расчет:

Выяснив все эти детали, мы можем построить максимально точный отчет, который покажет реальную картину выхода персонала на смену.

← На главную