При разработке мобильных приложений на платформе 1С:Предприятие часто возникает желание использовать механизм Расширения конфигурации для внесения доработок, не изменяя при этом основную поставку. Однако при попытке развертывания такого расширения на Android-устройстве через мобильную платформу, разработчики сталкиваются с тем, что функционал расширения просто не активируется. Давайте подробно разберем, почему это происходит и какие альтернативы предлагает 1С.
Первое, что необходимо уяснить — это архитектурное отличие Мобильной платформы от десктопной версии. Когда мы создаем мобильное приложение, мы фактически собираем дистрибутив, который содержит в себе скомпилированную конфигурацию. В процессе сборки платформа 1С объединяет все метаданные в единый исполняемый файл.
На текущий момент техническая архитектура мобильной платформы не поддерживает динамическое подключение Расширений (файлов с расширением .cfe) на стороне мобильного устройства. Платформа ожидает увидеть монолитную конфигурацию. Использование расширений, которые успешно работают в Конфигураторе на десктопе, невозможно при сборке мобильного приложения, так как они не учитываются при компиляции дистрибутива под Android.
Для правильного проектирования системы важно различать два основных режима работы:
Если ваша задача — обеспечение работы приложения в оффлайне с вашим уникальным функционалом, единственный верный путь на сегодняшний день — это внесение изменений непосредственно в Конфигурацию мобильного приложения. Использование расширений для «навешивания» логики поверх типовой конфигурации в мобильном варианте является тупиковым путем.
Для тех, кому критически важна работа без интернета, 1С предлагает инструмент Мобильный клиент с автономным режимом. Разберем его особенности:
Поскольку Мобильный клиент с автономным режимом предоставляет лишь транспортные инструменты, проектирование обмена ложится на плечи программиста. Мы рекомендуем рассмотреть следующие подходы:
Планы обмена для отслеживания изменений в данных.HTTP-сервисы, чтобы передавать пакеты данных при восстановлении связи.Проанализируем пример логики, которую можно использовать в модуле:
Если РаботаВАвтономномРежиме() Тогда
// Записываем данные в локальное хранилище
ЗаписатьДанныеЛокально(Данные);
Иначе
// Отправляем данные на сервер
ВызватьHTTPСервис(Данные);
КонецЕсли;
Таким образом, мы выяснили, что расширения в мобильной платформе — это не поддерживаемый сценарий. Планируя разработку, сразу закладывайте архитектуру с прямым изменением конфигурации (например, через механизм Копирования конфигурации или создание собственной конфигурации на базе существующей). Это гарантирует, что весь ваш функционал будет корректно скомпилирован в дистрибутив и доступен пользователю на мобильном устройстве в автономном режиме.