Почему в мобильной 1С на смартфонах HONOR не работает определение геолокации?

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

При работе с мобильными устройствами, лишенными предустановленных сервисов Google (GMS), пользователи нередко сталкиваются с проблемой: штатные функции 1С для работы с координатами возвращают пустые значения. Давайте разберем, почему это происходит и как мы можем заставить приложение работать корректно.

Выясняем причины отсутствия геолокации

Когда мы вызываем стандартные методы платформы СредстваГеопозиционирования.ИспользованиеДанныхГеопозиционированияВключено() или пытаемся получить список провайдеров через СредстваГеопозиционирования.ПолучитьПровайдеров(), мы получаем Ложь или Неопределено. Это происходит потому, что мобильная платформа 1С на уровне ядра жестко привязана к API сервисов Google для обработки данных GPS.

На смартфонах HONOR и HUAWEI новых моделей, где вместо Google Mobile Services используются Huawei Mobile Services (HMS), эти системные вызовы не находят ответной реакции от ОС. В результате 1С просто не «видит» аппаратный модуль GPS, так как не имеет механизмов прямого доступа к нему без посредничества Google-библиотек.

Решение проблемы через эмуляцию среды

Первый и самый доступный способ — создание «песочницы», внутри которой 1С будет «думать», что сервисы Google присутствуют. Для этого мы можем использовать специальные приложения-контейнеры, такие как GSpace или GBox.

  1. Установите приложение для эмуляции Google-сервисов из официального магазина приложений вашего устройства.
  2. Запустите внутри этой среды мобильную платформу 1С.
  3. Поскольку контейнер берет на себя функции прослойки между приложением и системными API, 1С сможет успешно инициализировать СредстваГеопозиционирования.

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

Если использование сторонних контейнеров неприемлемо для вашего бизнес-процесса, мы можем рассмотреть вариант разработки или подключения внешних компонентов. Поскольку платформа не обновляется для работы с HMS напрямую, опытные разработчики создают надстройки, позволяющие подменить стандартные вызовы 1С на прямые запросы к системным API устройства через механизмы нативного программирования (например, на Kotlin или Java).

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


// Пример логики обращения к внешней компоненте для получения координат
КомпонентаГео = ПодключитьВнешнююКомпоненту("Name.Component");
Если КомпонентаГео <> Неопределено Тогда
    Координаты = КомпонентаГео.ПолучитьТекущиеКоординаты();
КонецЕсли;

Как быть с проблемами HTTPS при обновлении

Помимо геолокации, пользователи часто сталкиваются с ошибкой сертификата при попытке обновления конфигурации через HTTPS. Это связано с тем, что в системе отсутствуют актуальные корневые сертификаты, которые в обычном Android подтягиваются через Google Play. В этом случае мы рекомендуем:

Итоги и рекомендации

Анализируя ситуацию, мы приходим к выводу, что проблема носит системный характер. Использование мобильной 1С на устройствах без GMS требует либо создания виртуальной среды, либо глубокой доработки приложения с использованием внешних компонентов. Мы советуем всем разработчикам при работе с парком устройств на HMS учитывать эти ограничения еще на этапе проектирования архитектуры мобильного приложения, чтобы избежать сюрпризов в эксплуатации.

← На главную