Работа мобильных сотрудников (монтажников, курьеров, торговых представителей) часто связана с местами, где отсутствует стабильное интернет-соединение. Использование типового мобильного клиента 1С:ERP в таких условиях становится невозможным, если не настроен специальный автономный режим. В этой статье мы подробно разберем, как заставить стандартный мобильный клиент работать в оффлайне, почему он может «игнорировать» настройки автономной конфигурации и как правильно организовать синхронизацию данных, используя в том числе ТСД Аматеро — специализированное решение для Андроид (есть готовое мобильное приложение для 1С:ERP с поддержкой ТСД), если ваша работа связана с сериями номенклатуры.
Для начала проанализируем, чем мобильный клиент с автономным режимом (МКА) отличается от обычного мобильного приложения. Ообычный мобильный клиент — это, по сути, «тонкий клиент» для мобильного устройства, который требует постоянной связи с сервером. Однако технология МКА позволяет «откусить» часть функционала основной конфигурации и упаковать его в локальную базу на устройстве. Когда связь есть — пользователь работает напрямую с базой ERP. Когда связь пропадает — он продолжает работу в локальной базе с ограниченным набором объектов, определенных в АвтономнаяКонфигурация.
Рассмотрим ситуацию: вы добавили документы в состав автономной конфигурации, обновили базу, но мобильный клиент всё равно требует интернет и не дает зайти в оффлайн. Выясним причину этого поведения. Оказывается, мобильный клиент 1С:ERP (скачанный из магазина приложений) автоматически подтягивает автономную часть только в том случае, если она была скомпилирована без единой ошибки.
Если в процессе сборки автономной конфигурации на стороне сервера возникают ошибки (например, обращение к объектам, которые не входят в состав автономной базы), система «тихо» игнорирует обновление автономной части. В итоге клиент остается чисто «онлайновым». Чтобы вовремя диагностировать подобные проблемы, рекомендуется проводить регулярный анализ конфигураций на наличие ошибок, связанных с вызовом функций общих модулей.
Разберем алгоритм действий, который поможет гарантированно запустить оффлайн-режим в типовом решении:
Проанализируем результаты тестирования. Если после строки «Пересоздание автономной конфигурации» сразу идет сообщение об окончании процесса — поздравляем, ваша конфигурация готова. Однако чаще всего вы увидите список ошибок в различных модулях.
Большинство ошибок возникает из-за того, что серверный код ERP пытается обратиться к функционалу, недоступному на мобильном устройстве (например, к COM-объектам, специфическим библиотекам Windows или просто к объектам метаданных, не включенным в автономный режим). Рассмотрим, как правильно изолировать такой код.
Для корректной работы мы должны использовать директивы препроцессора. Посмотрим на пример кода в общем модуле, который вызывает ошибку при создании автономной конфигурации:
#Если НЕ МобильныйАвтономныйСервер Тогда
// Код, который работает только в полноценной ERP на Windows/Linux
Результат = ВыполнитьСложныйРасчетНаСервере();
#Иначе
// Альтернативная логика для мобильного устройства или пустая заглушка
Результат = Ложь;
#КонецЕсли
Важно помнить, что проверка «Тестирование и исправление» за один проход может показать ошибки только в одном модуле — поможет инструментарий отладки и анализа кода 1С. Поэтому процедуру пересоздания автономной конфигурации нужно запускать итерационно: исправили ошибки — запустили снова — получили новый список — исправили.
Когда мы добились того, что мобильный клиент «увидел» автономную конфигурацию, встает вопрос обмена данными. Мы не можем выгрузить всю базу ERP на телефон. Разберем, как работают фильтры.
В платформе 1С реализован механизм Автономного сервера. При настройке состава автономной конфигурации для каждого объекта (например, документа «Заказ наряд») можно настроить Фильтр обмена данными. Проанализируем, как это реализовать программно.
Посмотрим на пример настройки фильтра в коде модуля:
Процедура ПриОпределенииДанныхАвтономнойКонфигурации(Настройки) Экспорт
// Устанавливаем фильтр для документа "ЗаявкаНаВыезд"
Фильтр = Настройки.Фильтры.Добавить("Документ.ЗаявкаНаВыезд");
Фильтр.Использование = ИспользованиеФильтраАвтономнойКонфигурации.ПоЗначениюРеквизита;
Фильтр.ИмяРеквизита = "Ответственный";
Фильтр.Значение = ПараметрыСеанса.ТекущийПользователь;
КонецПроцедуры
Чтобы магия автономности сработала, публикация информационной базы на IIS или Apache должна быть выполнена корректно. Выясним основные требования:
.default).ПолныеПрава или специально настроенная роль с доступом к автономности).Рассмотрим важный экономический и технический аспект. Пока устройство находится в сети, мобильный клиент занимает одну лицензию на сервере 1С. В момент ухода в оффлайн (автономный режим) лицензия не требуется, так как работа идет с локальной базой данных SQLite на самом телефоне. Чтобы упростить поиск товаров в условиях оффлайна, можно реализовать нечеткий поиск и идентификацию объектов, что крайне полезно при отсутствии постоянной связи с основным сервером.
Для отладки процесса не обязательно каждый раз брать в руки телефон. В конфигураторе предусмотрена возможность запуска в режиме Мобильный клиент с автономным режимом. Мы можем имитировать разрыв связи через меню параметров и смотреть, как ведут себя формы. Это значительно ускоряет разработку и поиск ошибок в логике «оффлайновых» документов.
Проанализировав ситуацию, можно сделать вывод: если вам нужно сохранить 100% идентичность интерфейса ERP (те же формы, те же кнопки) и функционал ограничивается 3-5 документами, то Мобильный клиент с автономным режимом — лучшее решение. Оно позволяет избежать разработки сложного API и написания обменов с нуля. При этом вы можете дополнительно настроить видимость реквизитов документов по пользователям или точечно ограничить доступность реквизитов справочников, чтобы упростить мобильный интерфейс.
Однако, если формы в вашей ERP перегружены сложной логикой, множеством вкладок и тяжелыми обработчиками событий, мобильное устройство может работать медленно. В этом случае стоит рассмотреть создание отдельного Мобильного приложения на платформе 1С с упрощенным интерфейсом, которое будет обмениваться данными с основной базой через HTTP-сервисы. Для этой задачи есть мобильный клиент ТСД с офлайн-режимом для 1С:ERP.