Интеграция системы контроля и управления доступом (СКУД) с учетными системами 1С:УПП или 1С:ЗУП — для этого есть готовая система интеграции СКУД с 1С:УПП или 1С:ЗУП — это не просто техническая задача по перекачке данных из одной базы в другую. Основная сложность заключается в методологии: как превратить «сырые» отметки о проходах через турникет в юридически значимые документы учета рабочего времени, такие как Табель учета рабочего времени, документы невыходов и сверхурочных. Разберем подробно, как это реализовать, чтобы не потерять данные об отпусках, больничных и не создать хаос в системе.
Рассмотрим ситуацию, когда мы пытаемся напрямую записывать данные в документ ТабельУчетаРабочегоВремени. Даже если вы используете инструменты, позволяющие выполнить групповое создание Табеля учета рабочего времени в УПП или ЗУП, при простой трансляции времени присутствия сотрудника в виде «Явка 8 часов» мы столкнемся с серьезными проблемами. Во-первых, система «затрет» плановые или уже введенные данные об отпусках и больничных. Во-вторых, СКУД фиксирует физическое нахождение на территории, которое не всегда совпадает с рабочим временем (человек мог прийти раньше, чтобы выпить кофе, или задержаться по личным делам). Проанализируем, как избежать этих ошибок.
Опытные разработчики рекомендуют не загружать данные напрямую в расчетные документы. Вместо этого создадим промежуточный механизм (например, дополнительный регистр сведений или специальный документ-регистратор). Рассмотрим алгоритм его работы:
Выясним, какими документами в 1С (УПП/ЗУП) лучше всего отражать расхождения между данными СКУД и графиком. Если мы хотим, чтобы система автоматически реагировала на недоработки, наиболее корректным путем будет создание документов НевыходыВОрганизациях. Разберем по шагам:
Если сотрудник пришел позже на 30 минут, мы можем создать документ Невыходы с видом «Внутрисменный невыход» (например, по невыясненной причине). В этом случае в табеле автоматически проставится фактически отработанное время, а разница зафиксируется как отклонение. Посмотрим на пример логики обработки:
// Пример логики определения отклонения
Если ВремяВхода > ВремяНачалаСменыПоГрафику Тогда
РазницаМинут = (ВремяВхода - ВремяНачалаСменыПоГрафику) / 60;
Если РазницаМинут > ДопустимыйПорог Тогда
СоздатьДокументНевыход("ВнутрисменноеОпоздание", РазницаМинут);
КонецЕсли;
КонецЕсли;
Проанализируем ситуацию с ранним приходом и поздним уходом. Важно понимать: согласно Трудовому кодексу, любая работа сверх графика должна быть подтверждена распоряжением руководства. СКУД не может быть основанием для автоматического начисления сверхурочных. Рассмотрим, как это реализовать в 1С:
РаботаВВыходныеИПраздничныеДни или ОплатаСверхурочныхЧасов.Выясним причину расхождений в обеденное время. Существует два подхода к учету обеда при интеграции со СКУД:
Фиксированный вычет: Мы просто вычитаем час обеда из общего времени пребывания, если сотрудник находился на предприятии в это время. Это самый простой способ, который используется в большинстве организаций.
Фактический учет: Если на предприятии установлены турникеты на выход из цеха или в столовую, мы можем считать реальное время отсутствия. Однако здесь важно установить МинимальныйПорог (например, 15 минут). Если сотрудника не было меньше этого времени, система не должна считать это перерывом, так как это могут быть служебные перемещения.
Наиболее жизнеспособной признана модель, где СКУД является не первичным источником данных для зарплаты, а контролирующим инструментом. Разберем эту концепцию подробнее:
В этой модели кадровики продолжают вводить приказы на отпуска, командировки и больничные в обычном режиме. Обработка загрузки из СКУД выполняет следующие действия:
При реализации обмена в старых конфигурациях на обычных формах (УПП) часто используют прямое подключение к базе СКУД через COM-соединение или ADODB. Если же интеграция идет не напрямую, а через выгрузку файлов, может потребоваться загрузка табеля учета рабочего времени из Excel — для этой задачи есть обработка загрузки Табеля из Excel в 1С. Посмотрим на пример инициализации прямого подключения к внешней базе SQL, где хранятся события проходов:
// Пример подключения к внешней БД СКУД
Connection = Новый COMОбъект("ADODB.Connection");
ConnectionString = "Driver={SQL Server};Server=" + СерверСКУД + ";Database=" + БазаСКУД + ";Uid=" + Логин + ";Pwd=" + Пароль + ";";
Попытка
Connection.Open(ConnectionString);
Сообщить("Связь со СКУД установлена");
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;
Важный совет: Не рекомендуется делать загрузку в режиме реального времени (при каждом событии входа). Это создает избыточную нагрузку на сервер 1С. Оптимально выполнять регламентную загрузку раз в сутки (ночью) или по запросу табельщика при формировании отчетности.
Прежде чем приступать к написанию кода, необходимо зафиксировать «Правила игры» на уровне локального нормативного акта предприятия. Рассмотрим, что должно быть в них прописано:
Таким образом, автоматизация учета рабочего времени через СКУД — это в первую очередь аналитический отчет о расхождениях, который помогает табельщику оперативно выявлять нарушения дисциплины, а не «волшебная кнопка», которая сама считает зарплату без участия человека.