Интеграция СКУД и 1С:ЗУП: от событий прохода до табеля

· 10 мин

Содержание

Подключить СКУД к 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. Регистр сведений для сырых событий: сотрудник, дата и время, точка прохода, направление, идентификатор события в СКУД.
  2. Регламентное задание, которое забирает новые события.
  3. Обработка или отчёт, который превращает события в часы и заполняет табель.

💡 Храните идентификатор события из СКУД в отдельном измерении регистра. Тогда повторная загрузка того же периода не создаст дублей — запись просто перезапишется.

Синхронизация сотрудников между 1С и СКУД

Главный вопрос — по какому ключу связать человека в 1С и карточку в СКУД. ФИО не подходит: однофамильцы и смена фамилии после свадьбы ломают связь.

Варианты ключа, от надёжного к слабому:

  • 🔑 уникальный идентификатор сотрудника из 1С (GUID ссылки) — не меняется никогда;
  • 🔑 табельный номер — надёжен, если его не перенумеровывают;
  • 🔑 номер пропуска (карты) — меняется при утере карты, поэтому хранится как атрибут, а не как ключ.

Номер пропуска удобно держать в карточке сотрудника. Без доработки формы это делается через дополнительный реквизит: Администрирование → Общие настройки → Дополнительные реквизиты и сведения, затем добавьте реквизит для справочника сотрудников, например «Номер пропуска».

Учтите особенность ЗУП: при внутреннем совместительстве у одного физического лица несколько элементов справочника «Сотрудники». Проход по карте один, а рабочих мест два. Заранее решите, к какому сотруднику относить время — обычно к основному месту работы.

Сопоставление полей
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 и отдельного пользователя с минимальными правами.

Публикацию базы на веб-сервере и перезапуск веб-сервера делайте вне рабочего времени: при перезапуске прерываются сеансы веб-клиента и обмены, которые идут через эту публикацию.

Расчёт рабочего времени по данным СКУД и заполнение табеля

Сырые события — это ещё не часы. Между проходами и табелем стоит алгоритм, и его правила надо согласовать с кадровой службой письменно.

Как события превращаются в часы

  1. Отфильтруйте события только по точкам периметра.
  2. Для каждого сотрудника и дня найдите первый вход и последний выход.
  3. Если правило «чистого времени» — сложите интервалы «вход → выход» и отнимите выходы на обед и по личным делам.
  4. Отнимите обеденный перерыв по графику, если он не фиксируется проходами.
  5. Сравните результат с нормой по графику работы сотрудника.

Пример. График 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С:Бухгалтерии?
Технически да, но смысла мало: в БП 3.0 нет кадрового учёта с графиками и табелем в том объёме, что в ЗУП. Обычно СКУД интегрируют с ЗУП 3.1 или ERP с блоком зарплаты.
Сколько стоит интеграция СКУД с 1С?
Ориентировочно: готовый модуль производителя — от нескольких тысяч до нескольких десятков тысяч рублей за лицензию. Своя доработка с обменом сотрудниками и загрузкой событий — примерно 20–60 часов работы программиста 1С, расчёт часов с ночными сменами добавляет ещё столько же.
Нужно ли согласие сотрудников на учёт времени через СКУД?
Обработка персональных данных для учёта рабочего времени связана с трудовыми отношениями. Для биометрии нужно отдельное письменное согласие по 152-ФЗ. Порядок контроля закрепите в локальном акте и ознакомьте с ним сотрудников.
Что будет с интеграцией после обновления ЗУП?
Расширение обычно продолжает работать. После каждого обновления проверьте, что расширение применилось без ошибок и регламентное задание включено. Готовый модуль обновляйте до версии, которую поставщик проверил на вашем релизе.
Можно ли обойтись без программиста?
Если у СКУД есть отчёт по присутствию с выгрузкой в Excel — да: кадровик сверяет его с табелем вручную. Это не интеграция, но для штата до 20–30 человек часто достаточно.

Источники

  • Трудовой кодекс РФ, статья 91
  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»
  • Постановление Госкомстата России от 05.01.2004 № 1 (унифицированные формы Т-12, Т-13)