Авторизация на терминалах сбора данных (ТСД) через стандартный ввод логина и пароля часто вызывает затруднения у складского персонала: маленькие кнопки экранной клавиатуры, необходимость помнить сложные пароли и временные затраты на ввод данных замедляют работу. Использование QR-кода для идентификации сотрудника — это эффективное решение, которое позволяет войти в систему за доли секунды. В этой статье мы подробно разберем, как реализовать такой механизм в среде 1С:ERP Управление предприятием, используя типовое Мобильное рабочее место (МРМ).
Проанализируем наиболее надежный способ реализации этой задачи. Вместо того чтобы заставлять платформу 1С выполнять системную авторизацию при каждом сканировании, мы применим метод «Виртуальной авторизации». Рассмотрим подробнее, как это работает.
Суть метода заключается в том, что ТСД всегда подключен к базе 1С под одной специально созданной служебной учетной записью (например, Пользователь_ТСД). Эта запись имеет минимальные права, достаточные только для запуска мобильного приложения и открытия начального экрана авторизации.
Разберем по шагам логику процесса:
Для реализации этой логики нам потребуется создать расширение для конфигурации 1С:ERP. Проанализируем ситуацию: нам нужно вмешаться в работу обработки МобильноеРабочееМестоРаботникаСклада. Выясним причину, почему лучше использовать расширение — это позволит сохранить типовую конфигурацию на поддержке и легко обновлять систему.
В расширении необходимо создать форму, которая будет служить «экраном приветствия». Основной код будет сосредоточен в обработчике внешнего события сканера. Посмотрим на пример кода, который отвечает за обработку отсканированного QR-кода:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
// Проверяем, что событие пришло от сканера штрихкодов
Если Событие = "Barcode" Тогда
QRДанные = СокрЛП(Данные);
// Ищем сотрудника по уникальному идентификатору из QR-кода
СотрудникСсылка = Справочники.ФизическиеЛица.НайтиПоРеквизиту("ИдентификаторДляQR", QRДанные);
Если НЕ СотрудникСсылка.Пустая() Тогда
// Устанавливаем авторизованного пользователя в контексте МРМ
УстановитьПараметрыАвторизации(СотрудникСсылка);
ЗакрытьЭкранБлокировки();
Иначе
Сообщить("Сотрудник не найден. Обратитесь к администратору.");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
В данном примере мы предполагаем, что в справочник ФизическиеЛица добавлен дополнительный реквизит ИдентификаторДляQR, в котором хранится строка, зашифрованная в QR-коде. Это может быть как GUID, так и табельный номер сотрудника.
Важным аспектом работы на ТСД (особенно на устройствах под управлением Android, таких как Zebra или Honeywell) является корректный перехват данных. Если QR-код сканируется как обычный текст, он может «попасть» не в ту переменную или вызвать ошибки интерфейса. Рассмотрим, как настроить получение данных профессионально.
Для того чтобы 1С понимала, что произошло сканирование, мы используем технологию Intent. В настройках ТСД (утилита DataWedge или аналоги) необходимо создать профиль для 1С и указать способ передачи данных — Intent Delivery. В мобильном приложении 1С мы подписываемся на это событие.
Выясним преимущества такого подхода: сканирование бейджа будет работать даже в том случае, если на форме нет активного поля ввода. Это критически важно для юзабилити на складе.
Существует и альтернативный вариант, который мы также проанализируем. Платформа 1С поддерживает запуск через специальные URL-схемы. Можно сформировать QR-код, который содержит в себе команду на запуск мобильного клиента с уже подставленными логином и паролем.
Пример структуры ссылки в QR-коде:
1cepp://server/base_name?n=ИмяПользователя&p=ПарольПользователя
Однако разберем по шагам недостатки этого метода:
Поэтому метод виртуальной авторизации (под сервисной учеткой) остается приоритетным для промышленной эксплуатации.
Проанализируем ситуацию с безопасностью при использовании статических QR-кодов на бейджах. Если сотрудник потеряет бейдж, нашедший его сможет войти в систему под чужим именем. Чтобы этого избежать, рассмотрим более продвинутый вариант — Динамический QR-код.
В этом случае у сотрудника на личном смартфоне установлено корпоративное приложение, которое генерирует временный код (действующий, например, 30 секунд). ТСД считывает этот код, а серверная часть 1С проверяет его валидность. Это реализуется с помощью алгоритмов TOTP (Time-based One-Time Password), аналогично системам двухфакторной аутентификации.
В типовой 1С:ERP уже существует справочник ШтрихкодыФизическихЛиц. Рассмотрим подробнее, как задействовать его для нашей задачи. Вместо создания собственных реквизитов, мы можем использовать этот регистр сведений.
Алгоритм работы будет следующим:
ШтрихкодыФизическихЛиц.Пример кода для поиска через типовой регистр:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Владелец КАК Сотрудник
|ИЗ
| РегистрСведений.ШтрихкодыФизическихЛиц КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод = &Штрихкод";
Запрос.УстановитьПараметр("Штрихкод", ОтсканированныйКод);
РезультатЗапроса = Запрос.Выполнить();
Это наиболее «чистый» способ с точки зрения архитектуры 1С, так как он использует штатные механизмы системы хранения кодов идентификации.
Подводя итог, можно сказать, что реализация входа по QR-коду на ТСД требует комплексного подхода. Мы рекомендуем использовать сочетание сервисной учетной записи для быстрого старта приложения и программной идентификации через расширение. Это обеспечит максимальную скорость работы склада и удобство для сотрудников.
При внедрении обязательно обратите внимание на настройку аппаратных кнопок сканера и профилей передачи данных (Intent), чтобы взаимодействие с системой было бесшовным. Использование ПараметрыСеанса.ТекущийПользователь (или аналогичных в контексте МРМ) позволит корректно фиксировать исполнителя во всех складских документах, таких как ОтборРазмещениеТоваров или ПриходныйОрдерНаТовары.