Авторизация сотрудников по персональным пластиковым картам (RFID/NFC) или персональным штрихкодам — востребованный сценарий на складах, в розничной торговле (РМК), на производственных линиях и пропускных пунктах. Однако при попытке переопределить стандартное окно входа платформы разработчики неизбежно сталкиваются с жесткими системными ограничениями. Разберем, почему нельзя кастомизировать стандартное окно входа средствами конфигуратора и какими проверенными способами можно решить эту задачу в тонком клиенте «1С:Предприятия».
Проанализируем последовательность запуска клиентского приложения 1С. Стандартный диалог выбора пользователя и ввода пароля отображается системным ядром платформы еще до того, как начнет выполняться какой-либо программный код конфигурации.
Важно учитывать следующие ключевые факторы:
ПередНачаломРаботыСистемы и ПриНачалеРаботыСистемы в модуле управляемого приложения вызываются исключительно после успешного прохождения аутентификации. Встроить произвольную форму или изменить логику платформенного окна средствами конфигуратора невозможно.Исходя из этих ограничений, рассмотрим четыре практических подхода к реализации бесконтактной авторизации.
Это наиболее гибкий и распространенный подход, применяемый в типовых конфигурациях для мест с высокой проходимостью сотрудников (кассы, складские терминалы). Рассмотрим его реализацию по шагам.
/N "РабочееМестоСклад" /P "Пароль" или средствами аутентификации операционной системы).ПриНачалеРаботыСистемы открывается специализированная форма блокировки/идентификации.ОбработкаОповещения.ФизическиеЛица или Сотрудники, после чего идентификатор записывается в параметры сеанса.Посмотрим на пример установки текущего сотрудника в модуле сеанса или серверном модуле формы:
УстановитьПривилегированныйРежим(Истина);
ПараметрыСеанса.ТекущийПользователь = НайденныйСотрудник;
УстановитьПривилегированныйРежим(Ложь);
Часто возникает вопрос: как фиксировать действия пользователя в Журнале регистрации, если сеанс открыт под общим пользователем информационной базы? Для этого не требуется перезапускать сеанс через командную строку. Достаточно программно фиксировать нужные операции с указанием конкретного физического лица с помощью метода встроенного языка ЗаписьЖурналаРегистрации().
Разберем пример записи действия авторизованного сотрудника:
ЗаписьЖурналаРегистрации(
"Авторизация.СменаПользователя",
УровеньЖурналаРегистрации.Информация,
,
НайденныйСотрудник,
"Успешная авторизация по карте: " + КодКарты
);
Если требуется именно платформенная аутентификация конкретного пользователя информационной базы, можно использовать работу считывателя «в разрыв клавиатуры» (HID-режим). В этом случае оборудование определяется операционной системой как обычная клавиатура и передает байты считанного кода как последовательность нажатий клавиш.
Разберем порядок настройки:
Enter).1cv8c.exe ENTERPRISE /IBName "НашаБаза" /N "ИвановИИ".Enter. Происходит вход в систему.Когда требуется полноценный выбор пользователя из множества учетных записей без ввода данных вручную, создается внешняя легковесная утилита (например, служба или фоновое приложение в системном трее на C#, Go или Python).
Проанализируем алгоритм работы такой связки:
1cv8c.exe ENTERPRISE /IBConnectionString "Srvr=AppServer;Ref=BaseName;" /N "ИвановИИ" /P "СекретныйПароль"
Этот способ позволяет реализовать дополнительную безопасность: когда сотрудник забирает карту со считывателя, внешняя утилита может принудительно завершить процесс 1cv8c.exe или послать команду блокировки экрана операционной системы.
Если инфраструктура предприятия использует централизованные каталоги (Active Directory) или корпоративный сервер аутентификации (IdP):