Автоматизация учета рабочего времени на основе данных систем контроля и управления доступом (СКУД) — одна из наиболее востребованных задач в крупных производственных компаниях. Внедрение 1С:Зарплата и Управление Персоналом КОРП 3.1 предоставляет для этого мощный фундамент, однако интерпретация «сырых» данных о проходах через турникет требует тщательного проектирования алгоритмов. Разберем детально, как сопоставить фактическое время пребывания сотрудника на территории с его плановым графиком, учитывая ночные смены и возможные ошибки регистрации.
Прежде чем приступать к разработке собственных алгоритмов, проанализируем возможности версии КОРП. В этой конфигурации уже реализован механизм интеграции со СКУД. В системе предусмотрен документ События СКУД, который служит промежуточным хранилищем. Данные в него попадают либо через импорт файлов, либо посредством прямого подключения к базе данных СКУД. Основная сложность заключается не в загрузке, а в последующей обработке этих записей.
Типовой функционал позволяет строить отчеты «Анализ данных СКУД» и «Сравнение данных СКУД и табеля». Однако для полноценного автоматического заполнения табеля нам необходимо реализовать логику сопоставления ФИО, ТабельныйНомер, ТипСобытия (вход/выход) и ВремяСобытия с конкретными сменами.
Рассмотрим наиболее надежный вариант решения — интервальное отображение. Вместо того чтобы просто искать «первый вход» и «последний выход», мы построим две временные таблицы и выполним их наложение. Разберем этот процесс по шагам:
Проанализируем пример структуры алгоритма на языке 1С для подготовки данных:
// Пример формирования структуры интервала
ИнтервалПлановый = Новый Структура;
ИнтервалПлановый.Вставить("Начало", Смена.ДатаНачала);
ИнтервалПлановый.Вставить("Окончание", Смена.ДатаОкончания);
// Пример поиска пересечения интервалов
Функция ПолучитьПересечение(ПланНачало, ПланКонец, ФактНачало, ФактКонец)
НачалоПересечения = Макс(ПланНачало, ФактНачало);
КонецПересечения = Мин(ПланКонец, ФактКонец);
Если НачалоПересечения < КонецПересечения Тогда
Возврат КонецПересечения - НачалоПересечения; // Длительность в секундах
КонецЕсли;
Возврат 0;
КонецФункции
Наибольшую сложность представляют смены, переходящие через полночь. При использовании простого фильтра по календарным суткам данные «разрываются». Выясним, как этого избежать. Для корректной интерпретации необходимо использовать «Окно актуальности».
Для каждой смены задается временной коридор (например, +/- 4 часа от начала и конца). Если смена начинается в 22:00, мы ищем события входа в диапазоне с 18:00 до 02:00. Все события, попавшие в это окно, привязываются к одной смене, независимо от календарной даты. Это позволяет корректно учитывать «первое событие дня — выход» для сотрудников, уходящих с ночного дежурства.
Системы контроля доступа часто генерируют избыточные данные. Проанализируем основные проблемы и способы их решения:
ОшибкаЛогики. Такие записи должны отправляться на ручную проверку мастеру смены или администратору СКУД.Важно учитывать специфику территории предприятия. Если столовая и зоны отдыха находятся внутри периметра СКУД, то выходы на обед не будут зафиксированы. В этом случае мы просто вычитаем фиксированное время обеда из общей продолжительности присутствия.
Если же турникеты стоят на каждом выходе из здания, и сотрудники «пикают» картой, уходя на перекур, мы можем столкнуться с огромным количеством мелких интервалов. Здесь стоит применить правило порога: если время отсутствия составило менее 15 минут, мы считаем это рабочим временем. Все, что свыше — вычитаем из фактической отработки.
Как показывает практика, прямое использование данных СКУД для расчета зарплаты юридически рискованно без промежуточного звена. Рассмотрим модель «Тройного подтверждения»:
Такой подход позволяет исключить ситуации, когда сотрудник находился на территории, но не работал (например, остался в спортзале предприятия после смены). 1С:ЗУП КОРП позволяет настроить отчетность так, чтобы любые расхождения между СКУД и табелем мастера подсвечивались красным цветом для анализа отделом кадров или службой безопасности.
Посмотрим на ситуацию со стороны методологии. Чтобы данные СКУД стали основанием для дисциплинарных взысканий или начислений, необходимо закрепить это в Локальных нормативных актах (ЛНА). В положении об оплате труда должно быть четко прописано, что время работы фиксируется автоматизированной системой. Без этого любая интерпретация данных в пользу уменьшения оплаты труда может быть оспорена сотрудником в суде.
Подводя итог, отметим, что наиболее здравым решением является построение гибкой системы интервалов с настраиваемыми «окнами актуальности» и обязательным этапом верификации данных ответственными лицами. Это превращает СКУД из карательного инструмента в эффективный механизм объективного учета рабочего времени.