При работе с мобильным клиентом 1С на складах или в торговых залах пользователи часто сталкиваются с неудобством: необходимостью постоянного выбора имени из длинного списка и ручного ввода пароля. Ситуация осложняется, если одно устройство используют несколько сотрудников по очереди. Оптимальным решением в данном случае является авторизация через сканирование QR-кода. Рассмотрим подробнее, какими способами можно реализовать этот механизм, разберем технические нюансы и выясним причины типичных ошибок.
Проанализируем самый эффективный способ автоматизации входа — использование специальных системных ссылок (Deep Links). Операционные системы Android и iOS позволяют вызывать мобильный клиент 1С, передавая ему параметры подключения и учетные данные прямо в строке адреса. Если зашить такую строку в QR-код, штатная камера телефона предложит открыть приложение 1С и автоматически подставит логин и пароль.
Формат ссылки для мобильного клиента:
Для мобильного клиента используется схема v8rc:// или универсальная e1c://. Структура ссылки выглядит следующим образом:
e1c://server/base_name?N=ИмяПользователя&P=Пароль
Разберем параметры подробнее:
Важно учитывать: данный механизм сработает только в том случае, если в настройках публикации на веб-сервере разрешена аутентификация по протоколу HTTP (Basic Auth). Посмотрим на пример формирования такой строки в коде 1С:
ТекстСсылки = "e1c://myserver.com/work_base?N=" + ИмяСотрудника + "&P=" + ПарольСотрудника;
// Далее этот текст преобразуется в QR-код с помощью любой библиотеки генерации QR
Если требования безопасности не позволяют хранить пароли в QR-кодах или часто перезапускать приложение, проанализируем технологию смены контекста. Суть заключается в том, что мобильный клиент постоянно залогинен под одной служебной учетной записью с минимальными правами (например, пользователь «Терминал_МК»).
Рассмотрим по шагам логику работы этого метода:
ПараметрыСеанса.ТекущийПользователь.Посмотрим на пример кода обработки результата сканирования в модуле формы:
&НаКлиенте
Процедура ОбработкаСканирования(ДанныеШтрихкода, Результат)
Если Результат Тогда
// Текст из QR-кода (например, GUID)
Идентификатор = ДанныеШтрихкода;
Если АвторизоватьПользователяНаСервере(Идентификатор) Тогда
Сообщить("Добро пожаловать, " + ПараметрыСеанса.ТекущийСотрудник);
ОткрытьОсновнуюФормуРаботы();
Иначе
Сообщить("Пользователь не найден!");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Выясним причину, почему у многих разработчиков не срабатывает метод ЗапускПриложенияМобильногоУстройства(). Этот метод предназначен для запуска внешних программ, а не для управления текущим сеансом 1С.
Разберем эту схему: вы создаете простейшее мобильное приложение на 1С (мобильная платформа), задача которого — только показать камеру. После успешного сканирования это приложение вызывает основной мобильный клиент. Для этого используется метод ПерейтиПоСсылке(), а не ЗапускПриложенияМобильногоУстройства().
&НаКлиенте
Процедура ПослеСканирования(Результат)
// Формируем URI-ссылку, как обсуждали в первом способе
СсылкаДляПерехода = "e1c://server/base?N=User&P=123";
// Этот метод закроет текущее приложение и откроет мобильный клиент 1С
ПерейтиПоСсылке(СсылкаДляПерехода);
КонецПроцедуры
Для крупных корпоративных систем рекомендуется использовать OpenID-идентификацию. Мобильный клиент 1С нативно поддерживает этот протокол. В этом случае QR-код содержит ссылку на внутренний сервис авторизации предприятия. При сканировании телефон получает токен доступа, который мобильный клиент использует для подтверждения личности без ручного ввода логина. Это наиболее безопасный способ, так как в QR-коде не передаются открытые пароли.
Проанализируем ситуацию, описанную автором темы. Попытка вызвать авторизацию через ЗапускПриложенияМобильногоУстройства() часто проваливается из-за неправильного указания имени пакета или отсутствия прав на запуск других приложений. В Android для вызова конкретной функции другого приложения требуется формирование Intent. Но для мобильного клиента 1С гораздо проще и надежнее использовать системную схему e1c:// через ПерейтиПоСсылке(). Система сама определит, какое приложение зарегистрировано для обработки этой схемы, и передаст ему параметры.
Важно: Никогда не храните постоянные пароли пользователей в статичных QR-кодах в открытом виде. Рассмотрим рекомендации по повышению безопасности:
Таким образом, мы разобрали основные пути реализации задачи. Выбор метода зависит от ваших требований к безопасности и того, насколько глубоко вы готовы кастомизировать конфигурацию. Самым быстрым в реализации является использование e1c://, а самым удобным для пользователя — метод «мягкой» авторизации без перезапуска приложения.