Разработка мобильных решений на платформе 1С:Предприятие часто требует обеспечения бесперебойной работы в условиях нестабильного интернет-соединения. Одной из самых современных и мощных технологий для этого является Мобильный клиент с автономным режимом (МКА). Однако начинающие разработчики часто сталкиваются с проблемой: при отключении сети приложение не переходит в оффлайн-режим, а просто закрывается с системной ошибкой «Потеряно соединение». Проанализируем, почему так происходит и как правильно настроить систему для корректной работы.
Первое и самое важное, что нам необходимо понять: существует два принципиально разных дистрибутива мобильного клиента. Рассмотрим их различия. Обычный Мобильный клиент (который в дистрибутивах часто называется 1cem-client-arm.apk) предназначен исключительно для работы в режиме «онлайн». Он является «тонким» отражением серверного интерфейса и не имеет локальной базы данных для хранения информации.
Для того чтобы система могла переключиться на локальную работу, нам потребуется специальный дистрибутив — Мобильный клиент с автономным режимом (в поставке платформы он обычно именуется как 1cem-standalone-arm.apk). Разберем по шагам, почему это критично. Автономный режим подразумевает, что на мобильном устройстве разворачивается полноценная (хотя и ограниченная) база данных SQLite, куда синхронизируются данные из основной информационной базы. Обычный клиент просто не содержит механизмов управления этой локальной БД.
Даже если мы установили правильный APK, автономный режим не заработает сам по себе. Нам необходимо подготовить «инфраструктуру» на стороне сервера. Проанализируем процесс публикации базы данных на веб-сервере (Apache или IIS). При выполнении публикации крайне важно зайти на закладку «Мобильный клиент» и выполнить следующие действия:
Без этой настройки сервер 1С не будет передавать мобильному клиенту метаданные и данные, необходимые для формирования локального кэша. В результате, при разрыве связи, клиент будет считать, что он работает в обычном онлайн-режиме, и выдаст ошибку соединения.
Теперь разберем, какие изменения нужно внести в саму конфигурацию. Чтобы объекты (справочники, документы) были доступны без интернета, мы должны явно это указать. В свойствах каждого необходимого объекта найдем поле «Использование в автономном режиме». По умолчанию там стоит значение «Не использовать». Нам нужно изменить его на «Использовать».
Также важно помнить о программном коде. Все процедуры, которые должны выполняться в оффлайне, должны находиться в модулях, имеющих флаги «Мобильное приложение (клиент)» и «Мобильное приложение (сервер)». Если ваша форма документа при открытии обращается к общему модулю, у которого стоит только флаг «Сервер», то в автономном режиме приложение упадет с ошибкой, так как основной сервер недоступен, а в автономном контуре этого модуля нет.
Для обработки момента перехода между режимами используется специальный обработчик в модуле управляемого приложения. Рассмотрим пример кода, который позволяет оповестить пользователя о смене режима работы:
&НаКлиенте
Процедура ПриИзмененииДоступностиОсновногоСервера(Доступен)
Если Доступен Тогда
Сообщить("Связь с сервером восстановлена. Работаем в онлайн-режиме.");
Иначе
Сообщить("Связь потеряна. Переходим в автономный режим работы.");
КонецЕсли;
КонецПроцедуры
Важный нюанс: это событие срабатывает не в ту же секунду, когда вы выключили Wi-Fi. Платформа 1С делает несколько попыток достучаться до сервера, прежде чем признать его недоступным. Обычно это занимает от 10 до 20 секунд. Если вы попытаетесь вызвать серверный метод (не помеченный как автономный) до того, как система официально перейдет в автономный статус, вы получите стандартное сообщение об ошибке связи.
Проанализируем ситуацию: вы установили standalone-клиент, настроили публикацию, но при первом же тесте (отключении сети) все равно видите ошибку. Выясним причину. Для работы автономного режима обязательно должен произойти первый успешный сеанс связи в режиме онлайн.
Во время первого запуска происходит процедура инициализации автономного режима. Мобильный клиент связывается с сервером, получает структуру данных согласно плану обмена и скачивает начальный образ данных. Только после того, как в строке состояния или в меню настроек появится статус «Автономный режим готов», вы можете безопасно отключать сеть. Если связь пропала до завершения первичной синхронизации, работать в оффлайне будет просто не с чем.
Если в меню мобильного клиента отсутствуют пункты «Основной сервер» и «Автономный» в разделе отладки, это явный признак того, что используется обычный (не автономный) клиент. В правильной standalone версии эти пункты позволяют принудительно переключать режимы для тестирования логики поведения приложения без физического отключения роутера. Убедитесь, что вы скачали именно тестовую платформу с поддержкой автономности, так как эта функциональность появилась в платформе начиная с версии 8.3.18.
Подводя итог, можно сказать, что мобильный клиент с автономным режимом — это сложный гибрид. Посмотрим на основные контрольные точки:
Соблюдение этих правил позволит вам создать надежное мобильное рабочее место, которое будет стабильно работать даже в «слепых зонах» складских помещений или на удаленных объектах без доступа к интернету.