Как правильно организовать загрузку данных из СКУД в 1С для учета рабочего времени

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

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

Проблема прямой загрузки в Табель

Рассмотрим ситуацию, когда мы пытаемся напрямую записывать данные в документ ТабельУчетаРабочегоВремени. Даже если вы используете инструменты, позволяющие выполнить групповое создание Табеля учета рабочего времени в УПП или ЗУП, при простой трансляции времени присутствия сотрудника в виде «Явка 8 часов» мы столкнемся с серьезными проблемами. Во-первых, система «затрет» плановые или уже введенные данные об отпусках и больничных. Во-вторых, СКУД фиксирует физическое нахождение на территории, которое не всегда совпадает с рабочим временем (человек мог прийти раньше, чтобы выпить кофе, или задержаться по личным делам). Проанализируем, как избежать этих ошибок.

Методика использования промежуточного регистра

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

  1. Сбор сырых данных: Из СКУД загружается информация в формате: ФИО — Дата/Время — Направление (Вход/Выход). Для некоторых популярных систем уже существуют готовые решения, например, получение графиков проходной из PERCo-S-20.
  2. Формирование интервалов: Программа должна «склеить» эти события в пары. Если сотрудник выходил на обед или по личным делам, мы получим несколько интервалов за день.
  3. Сопоставление с графиком: Проанализируем полученные интервалы на соответствие графику работы сотрудника. Именно на этом этапе выяснится, было ли это опоздание, ранний уход или работа в выходной.

Регистрация отклонений: Опоздания и невыходы

Выясним, какими документами в 1С (УПП/ЗУП) лучше всего отражать расхождения между данными СКУД и графиком. Если мы хотим, чтобы система автоматически реагировала на недоработки, наиболее корректным путем будет создание документов НевыходыВОрганизациях. Разберем по шагам:

Если сотрудник пришел позже на 30 минут, мы можем создать документ Невыходы с видом «Внутрисменный невыход» (например, по невыясненной причине). В этом случае в табеле автоматически проставится фактически отработанное время, а разница зафиксируется как отклонение. Посмотрим на пример логики обработки:


// Пример логики определения отклонения
Если ВремяВхода > ВремяНачалаСменыПоГрафику Тогда
    РазницаМинут = (ВремяВхода - ВремяНачалаСменыПоГрафику) / 60;
    Если РазницаМинут > ДопустимыйПорог Тогда
        СоздатьДокументНевыход("ВнутрисменноеОпоздание", РазницаМинут);
    КонецЕсли;
КонецЕсли;

Проблема сверхурочных и «лишнего» времени

Проанализируем ситуацию с ранним приходом и поздним уходом. Важно понимать: согласно Трудовому кодексу, любая работа сверх графика должна быть подтверждена распоряжением руководства. СКУД не может быть основанием для автоматического начисления сверхурочных. Рассмотрим, как это реализовать в 1С:

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

Учет обеденных перерывов

Выясним причину расхождений в обеденное время. Существует два подхода к учету обеда при интеграции со СКУД:

Фиксированный вычет: Мы просто вычитаем час обеда из общего времени пребывания, если сотрудник находился на предприятии в это время. Это самый простой способ, который используется в большинстве организаций.

Фактический учет: Если на предприятии установлены турникеты на выход из цеха или в столовую, мы можем считать реальное время отсутствия. Однако здесь важно установить МинимальныйПорог (например, 15 минут). Если сотрудника не было меньше этого времени, система не должна считать это перерывом, так как это могут быть служебные перемещения.

Архитектура «СКУД как инструмент проверки»

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

В этой модели кадровики продолжают вводить приказы на отпуска, командировки и больничные в обычном режиме. Обработка загрузки из СКУД выполняет следующие действия:

Технические нюансы интеграции в 1С:УПП (ЗУП 2.5)

При реализации обмена в старых конфигурациях на обычных формах (УПП) часто используют прямое подключение к базе СКУД через COM-соединение или ADODB. Если же интеграция идет не напрямую, а через выгрузку файлов, может потребоваться загрузка табеля учета рабочего времени из Excel — для этой задачи есть обработка загрузки Табеля из Excel в 1С. Посмотрим на пример инициализации прямого подключения к внешней базе SQL, где хранятся события проходов:


// Пример подключения к внешней БД СКУД
Connection = Новый COMОбъект("ADODB.Connection");
ConnectionString = "Driver={SQL Server};Server=" + СерверСКУД + ";Database=" + БазаСКУД + ";Uid=" + Логин + ";Pwd=" + Пароль + ";";
Попытка
    Connection.Open(ConnectionString);
    Сообщить("Связь со СКУД установлена");
Исключение
    Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;

Важный совет: Не рекомендуется делать загрузку в режиме реального времени (при каждом событии входа). Это создает избыточную нагрузку на сервер 1С. Оптимально выполнять регламентную загрузку раз в сутки (ночью) или по запросу табельщика при формировании отчетности.

Рекомендации по внедрению

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

  1. Какое отклонение считается допустимым (например, опоздание до 5 минут не регистрируется).
  2. Как учитываются забытые карты (механизм ручного ввода события «забыл пропуск»).
  3. Кто и в какой срок обязан подтверждать «невыясненные неявки», созданные системой на основании СКУД.

Таким образом, автоматизация учета рабочего времени через СКУД — это в первую очередь аналитический отчет о расхождениях, который помогает табельщику оперативно выявлять нарушения дисциплины, а не «волшебная кнопка», которая сама считает зарплату без участия человека.

← На главную