Как узнать номер телефона смартфона в мобильной платформе 1С и настроить авторизацию?

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

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

Ограничения мобильной платформы 1С и операционных систем

Проанализируем техническую сторону вопроса. В составе мобильной платформы 1С присутствует объект СредстваТелефонии, однако он предназначен исключительно для набора номеров, отправки сообщений, а также взаимодействия со списками вызовов и сообщений. Штатных свойств или функций для считывания собственного абонентского номера (MSISDN), IMEI или серийного номера SIM-карты в платформе не предусмотрено.

Даже при попытке реализовать чтение номера через механизм внешних компонент разработчик сталкивается с непреодолимыми системными ограничениями:

  1. Политика безопасности iOS: В операционной системе Apple полностью отсутствуют публичные API для извлечения телефонного номера устройства. Никакое приложение или внешняя компонента не могут получить доступ к этим данным.
  2. Особенности хранения данных на SIM-картах и ограничения Android: В Android системный метод получения номера возвращает пустую строку или null в подавляющем большинстве случаев. Телефонный номер не хранится непосредственно в памяти SIM-карты (блок EF_MSISDN), а маршрутизируется оператором связи по внутреннему идентификатору чипа. Кроме того, современные версии Android жестко ограничивают доступ к телефонным интерфейсам даже при наличии специальных разрешений, резервируя эти механизмы для системного ПО оператора.

Таким образом, автоматически считать абонентский номер из мобильного приложения гарантированным способом невозможно. Выясним, какие архитектурные сценарии позволяют обойти эту проблему и обеспечить надежную привязку пользователя.

Вариант 1. Верификация номера телефона через SMS

Если бизнес-процесс жестко требует привязки документов именно к номеру сотового телефона, разберем по шагам схему верификации через одноразовые пароли:

  1. Пользователь при первом запуске мобильного приложения указывает свой номер телефона вручную в окне настроек или стартовой авторизации.
  2. Мобильное приложение отправляет запрос на сервер центральной базы 1С с указанным номером.
  3. Центральная база генерирует одноразовый секретный код подтверждения и инициирует отправку SMS-сообщения на введенный телефонный номер через SMS-шлюз.
  4. Пользователь вводит полученный код в мобильном приложении, либо приложение перехватывает входящее SMS-сообщение и считывает код программно.
  5. После успешной сверки кода мобильная база фиксирует статус верификации и сохраняет подтвержденный номер в локальных константах.

Также возможна обратная схема: приложение инициирует отправку сервисного SMS с мобильного устройства сотрудника на специализированный номер корпоративного модема или шлюза. Сервер фиксирует входящий номер отправителя и автоматически подтверждает сессию для связанного кода устройства.

Вариант 2. Использование штатного идентификатора клиента 1С

Посмотрим на пример, когда явный номер телефона не требуется, а стоит лишь задача избавиться от логинов и паролей. В этом случае наиболее надежным подходом является связка сотрудника с уникальным идентификатором приложения.

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


// Пример получения уникального идентификатора мобильного клиента
ИдентификаторУстройства = СистемнаяИнформация.ИдентификаторКлиента;

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

// Передаем параметры через веб-сервис или HTTP-сервис центральной базы
ОтветСервера = ОтправитьЗапросРегистрации(ПараметрыРегистрации);

При таком подходе администратор в центральной информационной базе заранее создает карточку сотрудника и выдает ему короткий одноразовый код активации. При первом входе сотрудник вводит этот код, приложение передает его вместе со свойством СистемнаяИнформация.ИдентификаторКлиента в центральную базу, где происходит постоянная связка устройства с пользователем. Все последующие запросы к центральной базе выполняются бесшовно, с передачей подтвержденного GUID устройства.

Важный момент: при полном удалении приложения или очистке его данных идентификатор клиента генерируется платформой заново, что потребует повторной процедуры привязки устройства администратором.

Вариант 3. Авторизация с помощью QR-кода

Для корпоративных приложений отличной альтернативой ручному вводу логинов является вход по QR-коду:

  1. Сотрудник открывает свой профиль на стационарном рабочем месте в основной базе 1С, где для него генерируется уникальный одноразовый QR-код со сроком действия в несколько минут.
  2. Мобильное приложение задействует камеру устройства для сканирования кода через штатные средства работы с мультимедиа.
  3. Код содержит зашифрованный токен авторизации, который мобильное приложение отправляет на сервер бэкенда для подтверждения входа и получения постоянного рабочего ключа сессии.

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

← На главную