В процессе автоматизации работы с кадровыми данными в 1С:Зарплата и Управление Персоналом часто возникает потребность в получении плановых данных о рабочем времени сотрудника. Рассмотрим подробнее, как организовать получение этих данных программным путем, чтобы в дальнейшем использовать их, например, для формирования файла в формате Excel.
Важно различать График работы и Табель учета рабочего времени (Т-13). Если табель отражает фактическое использование времени, то график — это плановые показатели, которые назначаются сотруднику. В системе 1С:ЗУП эти данные не являются «отчетом» в привычном понимании, который можно вызвать одной функцией, а представляют собой набор сведений, хранящихся в регистрах.
Сведения о том, какой именно график назначен сотруднику на конкретную дату, хранятся в регистре сведений ГрафикиРаботыСотрудников. Однако для получения детальной «сетки» (дней и часов) необходимо обращаться к механизмам расчета норм времени.
Прежде чем приступать к расчету часов, нам нужно узнать, какой график закреплен за сотрудником на нужную нам дату. Для этого воспользуемся стандартизированным методом конфигурации КадровыйУчет.КадровыеДанныеСотрудников. Это позволяет получить актуальные кадровые данные без необходимости писать сложные прямые запросы к регистрам.
Разберем пример кода для получения данных сотрудника:
КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СотрудникСсылка),
"Организация, ФизическоеЛицо, ГрафикРаботы",
ТекущаяДата());
В результате работы этой функции вы получите структуру, в которой поле ГрафикРаботы будет содержать ссылку на элемент справочника ГрафикиРаботыСотрудников. Имея эту ссылку, мы можем двигаться дальше к получению детализации.
Так как встроенной функции для получения «готового графика как отчета» для внешнего вызова не существует, разработчикам рекомендуется использовать следующие подходы:
ДанныеГрафика. Вы можете сформировать запрос к этому регистру, отфильтровав данные по ссылке на график, полученной на предыдущем шаге.СформироватьФормуГрафикаРаботыСотрудника. В сложных случаях может потребоваться копирование логики заполнения данных из этой процедуры в ваш модуль.Для реализации задачи по сохранению данных в Excel, пройдем по шагам процесса:
ДанныеГрафика, используя полученную ссылку на график и заданный период.ТабличныйДокумент в коде.ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX).При проектировании алгоритма помните, что график работы сотрудника — величина динамическая. Она может меняться в течение месяца (например, при кадровых перемещениях). Поэтому при получении данных всегда указывайте корректный период, за который вы хотите собрать информацию. Не пытайтесь искать готовый «отчет», так как в ЗУП 3.1 работа с графиками — это процесс обработки данных регистров, а не генерация статических печатных форм.
Следуя этим рекомендациям и используя методы модуля КадровыйУчет, вы сможете построить гибкий механизм получения и выгрузки графиков работы сотрудников, адаптированный под нужды вашего бизнеса.