Интеграция СКУД и 1С:ЗУП: от событий прохода до табеля
Содержание
Подключить СКУД к 1С — значит наладить двусторонний обмен: из 1С:ЗУП в систему контроля доступа уходят сотрудники и признак «уволен», а из СКУД в 1С приходят события прохода, из которых считаются отработанные часы для табеля. Технически это делают одним из трёх способов: обмен файлами, запросы к REST API контроллера или сервера СКУД, прямое чтение базы данных СКУД.
Готовой «кнопки» подключения в типовой ЗУП 3.1 нет. Есть модули от производителей СКУД (такие модули выпускают, например, PERCo и Sigur) и есть доработка своими силами через расширение конфигурации . Порядок работ в обоих случаях одинаковый: договорённости, выбор способа обмена, связь сотрудников, расписание, расчёт часов.
Что проверить до подключения СКУД к 1С
Интеграция ломается не в коде, а на этапе договорённостей. Перед стартом соберите ответы на вопросы ниже.
📌 Кто ведёт справочник сотрудников. Почти всегда — 1С. Кадровик принимает человека в ЗУП, а СКУД получает его автоматически. Если пропуска оформляет охрана в своей программе, придётся сопоставлять записи вручную.
📌 Что есть у СКУД для обмена. Откройте документацию сервера СКУД и найдите одно из трёх:
- выгрузку событий в CSV, XLSX или XML;
- REST API или веб-сервис (адрес, способ авторизации, формат ответа);
- СУБД, в которой лежат события (MS SQL, PostgreSQL, Firebird).
📌 Какой режим работы базы 1С. Файловая база или клиент-серверная. От этого зависит, как будут работать регламентные задания (подробнее — в разделе про расписание).
📌 Сколько событий в день. Офис на 50 человек даёт 300–500 проходов. Завод на 2 000 человек с турникетами на каждом цехе — десятки тысяч. Для второго случая загрузка «всё за день одним запросом» не годится.
📌 Какие точки считаются рабочими. Турникет на входе в здание, двери кабинетов, столовая, курилка. Для учёта времени обычно берут только периметр: вход и выход с территории.
Если СКУД биометрическая (лицо, отпечаток), обработка таких данных требует письменного согласия сотрудника по 152-ФЗ. В 1С биометрические шаблоны не передавайте — достаточно идентификатора сотрудника.
Способы интеграции СКУД с 1С: какой выбрать
Выбор определяется не вкусом программиста, а тем, что умеет конкретная СКУД и как устроена сеть.
| Способ | Когда подходит | Риски |
|---|---|---|
| Готовый модуль производителя СКУД | Есть модуль под ваш релиз ЗУП | Отстаёт от обновлений 1С, обычно платный |
| Обмен файлами (CSV/XML) | Простая СКУД, нет API, СКУД в другой сети | Ручной шаг, ошибки кодировки и формата дат |
| REST API сервера СКУД | Современные облачные и серверные СКУД | Нужен доступ по сети и сервисная учётная запись |
| Прямое чтение базы СКУД | API нет, но СУБД доступна | Ломается при обновлении СКУД, нужны права только на чтение |
| HTTP-сервис в 1С (СКУД сама присылает события) | Нужны события в реальном времени | Публикация 1С на веб-сервере, вопросы безопасности |
Готовый модуль
Это расширение или внешняя обработка от поставщика СКУД. Перед покупкой уточните три вещи: поддерживается ли ваша конфигурация (ЗУП 3.1, ЗУП КОРП, ERP с блоком зарплаты), на каком релизе её проверяли и в каком виде она поставляется. Расширение (.cfe) переживает обновление типовой конфигурации лучше, чем снятие с поддержки.
Своя доработка
Для собственной интеграции делают расширение конфигурации. В нём обычно три объекта:
- Регистр сведений для сырых событий: сотрудник, дата и время, точка прохода, направление, идентификатор события в СКУД.
- Регламентное задание, которое забирает новые события.
- Обработка или отчёт, который превращает события в часы и заполняет табель.
💡 Храните идентификатор события из СКУД в отдельном измерении регистра. Тогда повторная загрузка того же периода не создаст дублей — запись просто перезапишется.
Синхронизация сотрудников между 1С и СКУД
Главный вопрос — по какому ключу связать человека в 1С и карточку в СКУД. ФИО не подходит: однофамильцы и смена фамилии после свадьбы ломают связь.
Варианты ключа, от надёжного к слабому:
- 🔑 уникальный идентификатор сотрудника из 1С (GUID ссылки) — не меняется никогда;
- 🔑 табельный номер — надёжен, если его не перенумеровывают;
- 🔑 номер пропуска (карты) — меняется при утере карты, поэтому хранится как атрибут, а не как ключ.
Номер пропуска удобно держать в карточке сотрудника. Без доработки формы это делается через дополнительный реквизит: Администрирование → Общие настройки → Дополнительные реквизиты и сведения, затем добавьте реквизит для справочника сотрудников, например «Номер пропуска».
Учтите особенность ЗУП: при внутреннем совместительстве у одного физического лица несколько элементов справочника «Сотрудники». Проход по карте один, а рабочих мест два. Заранее решите, к какому сотруднику относить время — обычно к основному месту работы.
Что передавать из 1С в СКУД
- приём на работу — создать владельца пропуска;
- перевод в другое подразделение — сменить группу доступа;
- увольнение — заблокировать пропуск датой увольнения;
- длительное отсутствие (декрет, длительный отпуск) — по решению службы безопасности.
Блокировку пропуска при увольнении автоматизируйте в первую очередь. Это та часть интеграции, которую служба безопасности ценит больше табеля.
Регламентные задания и загрузка событий прохода
События забирают по расписанию. Частота зависит от задачи: для табеля хватает раза в час или раза в сутки ночью, для «кто сейчас на месте» — каждые 5–10 минут.
Настройка расписания в типовой конфигурации на БСП: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Найдите задание из расширения или модуля, откройте его и задайте расписание. Там же видно, когда задание выполнялось последний раз и с какой ошибкой упало.
Особенность файловой базы
В файловом варианте регламентные задания выполняются, только пока к базе подключён хотя бы один сеанс. Ночью, когда все вышли из программы, загрузка не пойдёт. Решения: перейти на клиент-серверный вариант или запускать загрузку при входе первого пользователя утром.
Как забирать события порциями
Не запрашивайте «все события за месяц» каждый раз. Храните дату и время последнего загруженного события (или его номер в СКУД) и спрашивайте только то, что новее. Если СКУД умеет отдавать события по возрастающему номеру — используйте номер: у часов контроллеров бывает рассинхрон, а номер монотонен.
Пример запроса к REST API СКУД из модуля расширения. Адрес, параметры и поля ответа здесь условные — подставьте свои из документации СКУД:
Функция ПолучитьСобытияСКУД(ДатаС, Токен) Экспорт
Соединение = Новый HTTPСоединение("skud.local", 8080, , , , 30);
Адрес = "/api/events?from=" + ЗаписатьДатуJSON(ДатаС, ФорматДатыJSON.ISO);
Запрос = Новый HTTPЗапрос(Адрес);
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение СтрШаблон("СКУД вернула код %1", Ответ.КодСостояния);
КонецЕсли;
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
События = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Результат = Новый Массив;
Для Каждого Событие Из События Цикл
Строка = Новый Структура;
Строка.Вставить("ИДСобытия", Событие.id);
Строка.Вставить("КодСотрудника", Событие.personId);
Строка.Вставить("Время", ПрочитатьДатуJSON(Событие.time, ФорматДатыJSON.ISO));
Строка.Вставить("Вход", Событие.direction = "in");
Результат.Добавить(Строка);
КонецЦикла;
Возврат Результат;
КонецФункции
Токен не храните в тексте модуля. Для паролей и ключей в БСП есть безопасное хранилище данных — туда его и кладите.
Если СКУД присылает события сама
Обратный вариант: в расширении создают HTTP-сервис, базу публикуют на веб-сервере (IIS или Apache), а СКУД отправляет событие сразу после прохода. Так получают «живую» картину, но публикация 1С наружу требует HTTPS и отдельного пользователя с минимальными правами.
Публикацию базы на веб-сервере и перезапуск веб-сервера делайте вне рабочего времени: при перезапуске прерываются сеансы веб-клиента и обмены, которые идут через эту публикацию.
Расчёт рабочего времени по данным СКУД и заполнение табеля
Сырые события — это ещё не часы. Между проходами и табелем стоит алгоритм, и его правила надо согласовать с кадровой службой письменно.
Как события превращаются в часы
- Отфильтруйте события только по точкам периметра.
- Для каждого сотрудника и дня найдите первый вход и последний выход.
- Если правило «чистого времени» — сложите интервалы «вход → выход» и отнимите выходы на обед и по личным делам.
- Отнимите обеденный перерыв по графику, если он не фиксируется проходами.
- Сравните результат с нормой по графику работы сотрудника.
Пример. График 9:00–18:00, обед 1 час, норма 8 часов. Первый вход 9:12, последний выход 18:05. Присутствие — 8 ч 53 мин, минус обед 1 ч = 7 ч 53 мин. Опоздание — 12 минут.
Ночные смены
Смена 20:00–08:00 пересекает полночь. Если считать «по календарным суткам», выход в 8:00 попадёт в следующий день без входа, а вход в 20:00 — в день без выхода. Правильно привязывать событие к смене по графику: выход до 12:00 относится к смене, начавшейся накануне. Границу (здесь 12:00) задайте в настройках обработки, не зашивайте в код.
Что делать с результатом в ЗУП
Табель в ЗУП 3.1 заполняется по графику работы, а отклонения регистрируются документами: отпуск, больничный, командировка, прогул. Данные СКУД используют двумя способами:
- 🕘 как основание для табеля. Обработка расширения заполняет документ «Табель» фактическими часами. Кадровик проверяет и проводит.
- 🕘 как контрольный отчёт. Табель остаётся по графику, а отчёт СКУД показывает расхождения: опоздания, недоработки, проходы в дни отпуска. Кадровик сам решает, какие отклонения оформлять.
💡 Начинайте со второго варианта. Месяц-два контрольного отчёта покажут, насколько данным СКУД можно доверять, прежде чем они начнут влиять на зарплату.
Обязанность вести учёт фактически отработанного времени лежит на работодателе (статья 91 ТК РФ). СКУД — инструмент сбора данных, а решение о прогуле или опоздании принимает человек: событие «не прошёл через турникет» ещё не доказывает отсутствие на работе.
Отчёт для проверки перед закрытием месяца
Соберите в расширении отчёт на СКД с колонками: сотрудник, дата, норма по графику, присутствие по СКУД, разница, наличие документа-отклонения. Отбор «разница больше 30 минут и нет документа» за минуту показывает всех, по кому надо разбираться до расчёта зарплаты.
Ошибки интеграции СКУД с 1С и как их найти
При прямом чтении базы СКУД давайте 1С учётную запись СУБД только с правами на чтение. Ошибочный запрос с правами записи может повредить конфигурацию контроллеров.
Частые вопросы о подключении СКУД к 1С
Можно ли подключить СКУД к 1С:Бухгалтерии?
Сколько стоит интеграция СКУД с 1С?
Нужно ли согласие сотрудников на учёт времени через СКУД?
Что будет с интеграцией после обновления ЗУП?
Можно ли обойтись без программиста?
Источники
- Трудовой кодекс РФ, статья 91
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»
- Постановление Госкомстата России от 05.01.2004 № 1 (унифицированные формы Т-12, Т-13)