Возможно ли реализовать бесперебойный фоновый GPS-трекинг в мобильном приложении 1С?

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

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

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

Суть проблемы: почему Android блокирует фоновый трекинг

Прежде чем переходить к коду, давайте выясним причину, по которой фоновый сбор координат превратился в сложнейшую техническую задачу. Начиная с Android 8.0 и особенно жестко в Android 10, 11, 12 и более новых версиях, Google внедрил агрессивные механизмы энергосбережения:

  1. Режим Doze Mode (глубокий сон): Если устройство неподвижно лежит на столе с выключенным экраном, система переходит в состояние глубокого сна, отключая доступ к сети и приостанавливая все фоновые задачи, включая GPS-приемник.
  2. Ограничения фонового местоположения: В последних версиях Android приложение не может просто так получать координаты, если оно свернуто. Пользователь должен явно предоставить специальное разрешение «Разрешить в любом режиме» (ACCESS_BACKGROUND_LOCATION). Без этого разрешения, как только приложение сворачивается, доступ к GPS блокируется.
  3. Выгрузка процессов (Low Memory Killer): Если оперативной памяти на устройстве недостаточно, операционная система завершает «тяжелые» приложения. Мобильная платформа 1С, будучи ресурсоемкой средой, является одной из первых кандидатов на выгрузку. Вместе с закрытием приложения завершаются и все запущенные в нем фоновые потоки.

Рассмотрим по шагам, какими способами разработчики 1С могут обойти эти ограничения.

Решение 1. Использование встроенных средств геопозиционирования 1С

Для начала проанализируем базовый функционал, предоставляемый мобильной платформой 1С. Начиная с версии 8.3.17, фирма «1С» адаптировала платформу под требования Android 10+, добавив поддержку фонового геопозиционирования. Для этого в свойствах мобильного приложения в конфигураторе необходимо обязательно установить флаг использования фонового определения местоположения.

Давайте посмотрим на практический пример программного включения трекинга с использованием глобального контекста СредстваГеопозиционирования. Данный код позволяет настроить периодический опрос GPS-приемника:


Процедура Вкл_Трекинг(Команда)
    #Если МобильноеПриложениеКлиент Тогда
        Попытка
            // Принудительное включение приемника GPS на устройстве через системное намерение Android
            Запуск = Новый ЗапускПриложенияМобильногоУстройства;
            Запуск.Действие = "android.location.GPS_ENABLED_CHANGEPICK";
            Запуск.Данные = "enabled:true";
            Запуск.Запустить(Истина);
        Исключение
            Сообщить("Не удалось принудительно активировать приемник GPS: " + ОписаниеОшибки);
        КонецПопытки;

        Попытка
            // Подключение обработчика, который будет срабатывать при изменении координат
            // Параметры: ИмяПроцедурыОбработчика, Источник ("gps"), ИнтервалОпроса (в секундах), Погрешность
            СредстваГеопозиционирования.ПодключитьОбработчикИзмененияМестоположения(
                "ЗаписьвИсториюМестоположений", 
                "gps", 
                10, 
                10
            );
            Сообщить("GPS-трекинг успешно активирован!");
        Исключение
            Сообщить("Не удалось подключить обработчик GPS-трекинга: " + ОписаниеОшибки);
        КонецПопытки;
    #КонецЕсли
КонецПроцедуры

В процедуре-обработчике ЗаписьвИсториюМестоположений разработчик должен описать логику сохранения полученной координаты во внутреннюю базу данных (например, записывать данные в регистр сведений для последующей отправки на центральный сервер 1С).

Важное ограничение: Несмотря на то, что этот код отлично работает на старых версиях операционной системы, на современных смартфонах с Android 10 и выше штатные фоновые задания 1С (запущенные через ФоновыеЗадания.Выполнить) будут мгновенно уничтожены операционной системой, как только приложение 1С полностью выгрузится из оперативной памяти.

Решение 2. Административный обход ограничений ОС и управление разрешениями

Если полностью победить алгоритмы Android программным кодом внутри 1С не удается, разработчики часто прибегают к административно-техническим мерам контроля над действиями пользователей.

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

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

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

Решение 3. Интеграция со сторонними утилитами-трекерами (Схема «Магнита»)

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

Вместо этого на смартфоны сотрудников устанавливается легкое, специализированное нативное приложение-трекер (например, GPS Logger или аналогичное опенсорсное решение). Данная схема работает по следующему алгоритму:

  1. Нативный трекер работает как полноценная системная служба Android (Service). Он оптимизирован для минимального потребления энергии и умеет "достукиваться" до спутников даже в режиме глубокого сна устройства.
  2. Этот трекер непрерывно записывает координаты во внутренний файл формата GPX, TXT или базу данных SQLite на самом смартфоне.
  3. Когда торговый представитель запускает мобильное приложение 1С для оформления визита, 1С обращается к этому файлу (или локальной базе данных), считывает накопленные за период отсутствия координаты и отправляет их в центральную базу.

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

Решение 4. Написание внешней компоненты (Foreground Service)

Для тех, кто хочет получить бесшовное решение внутри одного приложения 1С, идеальным вариантом является использование механизма внешних компонент (Native API).

По правилам Android, единственным гарантированным способом защитить фоновый процесс от уничтожения является создание службы переднего плана (Foreground Service). Такая служба обязана показывать постоянное, неудаляемое уведомление в строке состояния (шторке уведомлений). Это сигнализирует операционной системе, что приложение выполняет важную работу (например, как музыкальный плеер или навигатор), и закрывать его нельзя.

Разработчики пишут внешнюю компоненту на Java/Kotlin для Android, которая упаковывается в ZIP и подключается к конфигурации 1С. Компонента запускает фоновую службу, собирает координаты автономно от 1С и передает их обратно в платформу через механизм внешних событий (ОбработкаВнешнегоСобытия). Это позволяет добиться стопроцентной стабильности трекинга непосредственно средствами экосистемы 1С.

Важные аппаратные настройки смартфонов

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

  1. В настройках смартфона перейдите в раздел «Приложения» -> «1С:Мобильное приложение» -> «Батарея» (или «Энергосбережение») и установите режим работы «Без ограничений» (или «Не оптимизировать»).
  2. Разрешите приложению автоматический запуск при старте операционной системы и фоновую активность в менеджере автозапуска.
  3. В окне запущенных приложений (диспетчере задач) зажмите карточку приложения 1С и выберите иконку с изображением замка («Закрепить приложение»). Это предотвратит его случайное закрытие пользователем при очистке оперативной памяти.

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

← На главную