Разработка для мобильных устройств на платформе 1С:Предприятие существенно отличается от создания классических десктопных решений. Одной из наиболее неочевидных проблем для начинающих разработчиков становится вопрос идентификации пользователей. В этой статье мы подробно разберем, почему стандартные методы авторизации не работают в мобильном приложении, и проанализируем доступные альтернативы.
Прежде всего, выясним причину возникновения сложностей. Рассмотрим официальную позицию и техническую реализацию мобильной платформы. В отличие от настольной версии, мобильное приложение 1С имеет жесткие ограничения в работе со списком пользователей информационной базы:
Таким образом, мы сталкиваемся с ситуацией, когда мобильное приложение по своей архитектуре является персональным инструментом. Однако на практике часто требуется, чтобы с одним планшетом или ТСД (терминалом сбора данных) могли работать разные сотрудники, например, кладовщики в разные смены — для этого подойдёт готовое мобильное приложение для ТСД на Android. Рассмотрим, как обойти эти ограничения.
Проанализируем ситуацию: если вашей главной задачей является полноценная многопользовательская работа с онлайн-доступом к серверу, возможно, стоит выбрать Мобильный клиент. Разберем ключевое различие:
Если специфика вашего проекта требует работы именно в формате Мобильного приложения (например, для обеспечения оффлайн-режима), перейдем к реализации собственной системы идентификации.
Разберем по шагам, как «городить свой велосипед», который будет работать надежно. Идея заключается в том, чтобы создать интерфейсную надстройку над единственным системным пользователем.
Шаг 1: Создание структуры данных. Мы создадим справочник ПользователиПриложения. В нем будем хранить логины, хеши паролей и ссылки на соответствующие объекты основной базы. Также нам понадобится регистр сведений или константа для хранения текущего авторизованного сотрудника.
Шаг 2: Перехват события запуска. Нам необходимо реализовать проверку в модуле управляемого приложения. Используем обработчик события ПриНачалеРаботыСистемы. Проанализируем пример кода:
Процедура ПриНачалеРаботыСистемы()
// Проверяем, авторизован ли кто-то в текущем сеансе
ТекущийСотрудник = ПолучитьТекущегоАвторизованногоПользователя();
Если ТекущийСотрудник.Пустая() Тогда
// Если данных нет, открываем самописную форму логина
ПараметрыФормы = Новый Структура("РежимБлокировкиВесьИнтерфейс", Истина);
ОткрытьФорму("ОбщаяФорма.ФормаАвторизации", ПараметрыФормы, , ВариантОткрытияОкна.БлокироватьВесьИнтерфейс);
КонецЕсли;
КонецПроцедуры
Шаг 3: Механизм программной смены ролей. Если нам нужно не просто «знать имя», а реально менять права доступа, мы можем использовать метод программного изменения набора ролей единственного пользователя. Для вступления изменений в силу приложение необходимо перезапустить. Разберем, как это сделать программно:
// Изменяем набор ролей у существующего системного пользователя
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
ПользовательИБ.Роли.Очистить();
ПользовательИБ.Роли.Добавить(Метаданные.Роли.Кладовщик);
ПользовательИБ.Записать();
// Перезапускаем приложение для применения прав
ЗавершитьРаботуСистемы(Ложь, Истина);
Параметр Истина в методе ЗавершитьРаботуСистемы заставляет платформу выполнить немедленный перезапуск, что позволяет пользователю сразу войти с новыми правами.
В современных реалиях ввод пароля на маленькой экранной клавиатуре неудобен. Выясним, какие инструменты мобильной платформы помогут нам упростить жизнь пользователю.
1. Использование биометрии (Touch ID / Face ID). Платформа позволяет запрашивать аутентификацию средствами ОС. Это идеальный вариант для подтверждения личности после того, как устройство уже было «привязано» к сотруднику. Рассмотрим логику: при первом входе пользователь вводит пароль, мы сохраняем токен в защищенное хранилище, а при последующих запусках вызываем биометрическое сканирование.
2. Идентификация по уникальному номеру устройства (ClientID). Мы можем получить идентификатор устройства и привязать его к конкретному пользователю в центральной базе 1С. При запуске мобильное приложение отправляет запрос на сервер (через HTTP-сервис): "Кто владелец устройства с ID XXX?". Если соответствие найдено, авторизация происходит автоматически. Для работы с системными функциями ОС при идентификации пригодится внешняя компонента с дополнительными функциями для Android.
3. Использование QR-кодов. Это самый популярный метод для складской логистики. Выясним причину его успеха: сотруднику достаточно подойти к монитору компьютера, где открыта его карточка в 1С, и сканировать индивидуальный QR-код камерой телефона. Мобильное приложение считывает зашифрованный в коде ключ и мгновенно авторизует пользователя. Для интеграции сканирования и работы с оборудованием можно использовать инструмент интеграции Android-устройств с 1С.
Важно помнить, что хранение паролей в открытом виде внутри мобильной базы небезопасно. Проанализируем рекомендации по защите данных:
Подведем итог: несмотря на то, что штатный список пользователей в мобильной платформе 1С ограничен, мы имеем богатый набор инструментов для создания гибкой системы идентификации. Выбор конкретного метода зависит от требований к безопасности и того, насколько часто пользователям приходится менять свои устройства.