Как организовать выполнение фоновых и регламентных заданий в мобильном приложении 1С?

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

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

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

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

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

  1. Отсутствие стандартных регламентных заданий: В мобильной платформе регламентные задания по расписанию отсутствуют. Объекты вроде ФоновыеЗадания.Выполнить предназначены только для распараллеливания задач и выполнения тяжелых операций без блокировки интерфейса, пока само приложение открыто и активно.
  2. Приостановка таймеров: Вызов метода ПодключитьОбработчикОжидания перестает срабатывать сразу после сворачивания приложения или блокировки экрана. Операционная система приостанавливает выполнение циклов и таймеров приложения для экономии заряда аккумулятора.
  3. Энергосбережение мобильных ОС: Подсистемы энергосбережения (например, Doze Mode в Android) жестко ограничивают фоновые сетевые подключения и усыпляют процессы, не имеющие активного пользовательского интерфейса.

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

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


// Подключение отслеживания изменения координат
СредстваГеопозиционирования.ПодключитьОбработчикИзмененияМестоположения(
    "ОбработчикИзмененияКоординат",
    60, // Интервал опроса в секундах
    10  // Минимальное смещение в метрах
);

Работа данного механизма в фоновом режиме зависит от версии платформы и настроек операционной системы:

  1. Android: Начиная с версии мобильной платформы 8.3.17, была возобновлена штатная поддержка фонового геопозиционирования. Для успешной работы требуется, чтобы пользователь явно предоставил приложению системное разрешение на доступ к геоданным в фоновом режиме («Всегда / Разрешить в любом режиме»).
  2. iOS: Требуется сборка мобильного приложения с включенным параметром Background Modes (в частности, Location updates). Однако следует учитывать, что в некоторых версиях платформы (например, 8.3.9) фоновое геопозиционирование для iOS отключалось из-за обновленных правил политики безопасности компании Apple.

Альтернативные технические решения

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

  1. Использование Push-уведомлений: Центральная база 1С по регламентному заданию отправляет на мобильное устройство push-сообщение. При нажатии на уведомление пользователь открывает приложение, и происходит запуск нужной логики или обмена данными. На Android также возможно использование фоновых служебных push-сообщений (Data Push) для кратковременного пробуждения приложения.
  2. Внешняя компонента с нативной службой (Android Foreground Service): Через механизм внешних компонент (Native API) для Android разрабатывается модуль на Java/Kotlin. Модуль запускает переднеплановую службу (Foreground Service) с отображением постоянного значка в шторке уведомлений. Такая служба не уничтожается операционной системой и может регулярно собирать данные GPS, передавая их в 1С через внешние события.
  3. Выделенное нативное приложение-трекер: Создание отдельного легкого сервиса на Kotlin или Swift, выполняющего исключительно сбор координат и их прямую отправку на HTTP-сервис центральной базы 1С. Такой вариант наиболее надежен, не требует удержания тяжелого процесса мобильной платформы 1С в памяти и минимально расходует заряд батареи.

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

← На главную