Как реализовать авторизацию пользователей в 1С с помощью RFID-считывателя или сканера штрихкодов?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Авторизация сотрудников по персональным пластиковым картам (RFID/NFC) или персональным штрихкодам — востребованный сценарий на складах, в розничной торговле (РМК), на производственных линиях и пропускных пунктах. Однако при попытке переопределить стандартное окно входа платформы разработчики неизбежно сталкиваются с жесткими системными ограничениями. Разберем, почему нельзя кастомизировать стандартное окно входа средствами конфигуратора и какими проверенными способами можно решить эту задачу в тонком клиенте «1С:Предприятия».

Архитектурные ограничения платформы «1С:Предприятие»

Проанализируем последовательность запуска клиентского приложения 1С. Стандартный диалог выбора пользователя и ввода пароля отображается системным ядром платформы еще до того, как начнет выполняться какой-либо программный код конфигурации.

Важно учитывать следующие ключевые факторы:

  1. Точка входа исполняемого кода: Обработчики событий ПередНачаломРаботыСистемы и ПриНачалеРаботыСистемы в модуле управляемого приложения вызываются исключительно после успешного прохождения аутентификации. Встроить произвольную форму или изменить логику платформенного окна средствами конфигуратора невозможно.
  2. Доступность внешних компонент и оборудования: До старта пользовательского сеанса невозможно инициализировать механизмы «Библиотеки подключаемого оборудования» (БПО), загрузить внешние компоненты (Native API, COM) и подписаться на асинхронные внешние события от портов (COM, USB-VirtualCOM).

Исходя из этих ограничений, рассмотрим четыре практических подхода к реализации бесконтактной авторизации.

Способ 1. Внутрисистемная авторизация (режим «Киоск» или рабочий стол РМК)

Это наиболее гибкий и распространенный подход, применяемый в типовых конфигурациях для мест с высокой проходимостью сотрудников (кассы, складские терминалы). Рассмотрим его реализацию по шагам.

  1. Старт под технической учетной записью: В операционной системе ярлык запуска 1С настраивается на автоматический вход под общим системным пользователем с ограниченными правами (например, через параметры командной строки /N "РабочееМестоСклад" /P "Пароль" или средствами аутентификации операционной системы).
  2. Открытие стартовой формы авторизации: При старте сеанса в обработчике ПриНачалеРаботыСистемы открывается специализированная форма блокировки/идентификации.
  3. Считывание данных: На открытой форме оборудование может работать в двух режимах:
    • Через БПО (COM/VirtualCOM): Устройство подключается через стандартную подсистему и при считывании генерирует событие в процедуре ОбработкаОповещения.
    • В режиме HID (эмуляция клавиатуры): На форме размещается поле ввода с постоянным удержанием фокуса, куда считыватель отправляет код метки с суффиксом перевода строки (Enter).
  4. Фиксация пользователя в сеансе: По коду карты находится соответствующий элемент справочника ФизическиеЛица или Сотрудники, после чего идентификатор записывается в параметры сеанса.

Посмотрим на пример установки текущего сотрудника в модуле сеанса или серверном модуле формы:


УстановитьПривилегированныйРежим(Истина);
ПараметрыСеанса.ТекущийПользователь = НайденныйСотрудник;
УстановитьПривилегированныйРежим(Ложь);

Часто возникает вопрос: как фиксировать действия пользователя в Журнале регистрации, если сеанс открыт под общим пользователем информационной базы? Для этого не требуется перезапускать сеанс через командную строку. Достаточно программно фиксировать нужные операции с указанием конкретного физического лица с помощью метода встроенного языка ЗаписьЖурналаРегистрации().

Разберем пример записи действия авторизованного сотрудника:


ЗаписьЖурналаРегистрации(
    "Авторизация.СменаПользователя",
    УровеньЖурналаРегистрации.Информация,
    ,
    НайденныйСотрудник,
    "Успешная авторизация по карте: " + КодКарты
);

Способ 2. Использование считывателя в режиме клавиатуры (HID) со стандартным окном

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

Разберем порядок настройки:

  1. Считыватель программируется так, чтобы после передачи данных отправлялся суффикс возврата каретки (клавиша Enter).
  2. В параметрах ярлыка запуска тонкого клиента указывается конкретный логин пользователя: 1cv8c.exe ENTERPRISE /IBName "НашаБаза" /N "ИвановИИ".
  3. При таком запуске стандартное окно авторизации открывается с уже заполненным именем и активным фокусом в поле пароля.
  4. Пользователь подносит карту к считывателю. Считыватель вводит UID карты (который выступает в роли пароля пользователя ИБ) и автоматически посылает нажатие клавиши Enter. Происходит вход в систему.

Способ 3. Внешнее приложение запуска (лаунчер в трее)

Когда требуется полноценный выбор пользователя из множества учетных записей без ввода данных вручную, создается внешняя легковесная утилита (например, служба или фоновое приложение в системном трее на C#, Go или Python).

Проанализируем алгоритм работы такой связки:

  1. Лаунчер постоянно слушает входящие данные с COM-порта RFID-считывателя.
  2. При поднесении карты утилита сопоставляет считанный UID с учетными данными сотрудника (таблица соответствия может храниться локально в зашифрованном виде либо запрашиваться через HTTP-сервис 1С).
  3. Утилита формирует команду запуска тонкого клиента с явной передачей логина и пароля:

1cv8c.exe ENTERPRISE /IBConnectionString "Srvr=AppServer;Ref=BaseName;" /N "ИвановИИ" /P "СекретныйПароль"

Этот способ позволяет реализовать дополнительную безопасность: когда сотрудник забирает карту со считывателя, внешняя утилита может принудительно завершить процесс 1cv8c.exe или послать команду блокировки экрана операционной системы.

Способ 4. Сквозная аутентификация через ОС или OpenID / SSO

Если инфраструктура предприятия использует централизованные каталоги (Active Directory) или корпоративный сервер аутентификации (IdP):

  1. Аутентификация операционной системы: Платформа 1С штатно поддерживает вход по текущему пользователю Windows/Linux. Если на уровне операционной системы настроен вход по смарт-картам или электронным ключам (Smart Card Logon), пользователь прикладывает карту для входа в Windows, а тонкий клиент 1С запускается без запроса учетных данных.
  2. Аутентификация по OpenID Connect: При публикации базы на веб-сервере процедура проверки подлинности делегируется внешнему сервису. Вход на стороне провайдера идентификации можно связать со смарт-картами, стандартами WebAuthn/FIDO2 или корпоративным оборудованием. После подтверждения личности на сервере авторизации сеанс 1С открывается автоматически.
← На главную