Как создать APK-файл мобильного приложения 1С с уже заполненными данными

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

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

Метод 1. Программное заполнение из макетов (метод «коробочного» наполнения)

Рассмотрим наиболее надежный способ — внедрение данных непосредственно в дерево конфигурации. Этот метод гарантирует, что даже без доступа к интернету пользователь получит предзаполненную базу (например, классификаторы, НСИ или начальные остатки). Проанализируем алгоритм реализации этого метода по шагам.

Во-первых, подготовим данные. Нам необходимо выгрузить нужную информацию из эталонной базы в промежуточный формат, например, JSON или XML. Сохраним этот файл как макет типа Двоичные данные в нашей мобильной конфигурации.

Во-вторых, реализуем механизм «первого запуска». Нам нужно определить момент, когда приложение открывается впервые на устройстве. Для этого удобно использовать параметры сеанса или проверку заполнения определенной константы. Разберем пример кода, который считывает данные из макета и создает элементы справочника:


Процедура ПриПервомЗапуске()
    // Проверяем, были ли данные уже загружены
    Если Константы.ДанныеЗагружены.Получить() Тогда
        Возврат;
    КонецЕсли;

    // Получаем макет с данными
    МакетДанных = УправлениеМобильнымПриложением.ПолучитьМакет("НачальнаяЗагрузка");
    
    // Читаем двоичные данные и преобразуем в строку (например, JSON)
    ТекстДанных = ПолучитьСтрокуИзДвоичныхДанных(МакетДанных);
    
    // Десериализация и создание объектов
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТекстДанных);
    Данные = ПрочитатьJSON(ЧтениеJSON);
    
    Для Каждого СтрокаДанных Из Данные Цикл
        НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
        НовыйЭлемент.Наименование = СтрокаДанных.Наименование;
        НовыйЭлемент.Код = СтрокаДанных.Код;
        НовыйЭлемент.Записать();
    КонецЦикла;
    
    Константы.ДанныеЗагружены.Установить(Истина);
КонецПроцедуры

Этот код следует вызывать в модуле управляемого приложения в обработчике ПриНачалеРаботыСистемы. Таким образом, при первой инсталляции APK система сама наполнит базу из «зашитого» внутри макета.

Метод 2. Использование предопределенных элементов

Если объем данных невелик (например, только основные категории или настройки), проанализируем возможность использования предопределенных элементов. Предопределенные данные создаются платформой автоматически при первом запуске базы данных на основе метаданных конфигурации.

Для реализации этого метода достаточно в конфигураторе мобильного приложения в соответствующем справочнике или плане видов характеристик создать нужные элементы на вкладке «Прочее» (кнопка «Предопределенные»). При установке APK эти элементы появятся в базе автоматически. Однако помните, что этот метод не подходит для больших объемов данных или динамически меняющейся информации.

Метод 3. Подстановка готового файла базы данных (1Cv8.1CD)

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

  1. Запустите мобильное приложение в эмуляторе или на тестовом устройстве.
  2. Заполните его всеми необходимыми данными вручную или через обмен. Для регулярной синхронизации данных между основными базами на этапе подготовки шаблона настраивают автоматический обмен данными по расписанию.
  3. Извлеките файл базы данных 1Cv8.1CD из внутренней памяти устройства (требуются права доступа к папке приложения).
  4. В Сборщике мобильных приложений, перед финальной упаковкой в APK, замените пустой шаблонный файл базы данных на ваш подготовленный файл.

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

Метод 4. Мобильный клиент с автономным режимом

Если ваша задача — передать в приложение актуальные данные из центральной базы (например, из УТ 11 или ERP), наиболее современным подходом будет использование Мобильного клиента с автономным режимом. В этом случае данные не «зашиваются» в APK, а синхронизируются автоматически.

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

Метод 5. Загрузка через внешние веб-сервисы

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

В мобильном приложении прописываем логику: при первом запуске оно обращается по заданному URL, проходит авторизацию и скачивает пакет данных (например, в формате ZIP или JSON). Посмотрим на пример вызова HTTP-сервиса:


Соединение = Новый HTTPСоединение("myserver.com", , "user", "password");
Запрос = Новый HTTPЗапрос("/v1/get_initial_data");
Ответ = Соединение.Получить(Запрос);

Если Ответ.КодСостояния = 200 Тогда
    // Обработка полученных данных
    ДанныеJSON = Ответ.ПолучитьТелоКакСтроку();
    // Далее аналогично Методу 1
КонецЕсли;

Внимание: При сборке APK в параметрах разрешений (Permissions) обязательно укажите право на использование интернета (INTERNET), иначе приложение не сможет связаться с сервером.

Работа с внешними компонентами (БПО)

Часто вместе с данными в мобильное приложение нужно «зашить» драйверы торгового оборудования (Библиотека подключаемого оборудования — БПО). Посмотрим на особенности их работы в APK:

Использование расширений конфигурации

Выясним, как упростить обновление логики заполнения данных без пересборки всего APK. Вы можете использовать расширения конфигурации (cfe). Если вы используете мобильную платформу как контейнер, вы можете удаленно загрузить расширение, которое при первом запуске выполнит процедуру ЗаполнитьНачальныеДанные(). Это позволяет гибко менять состав начальных данных, не заставляя пользователей переустанавливать приложение целиком.

Подводя итог, наиболее стабильным и рекомендуемым способом для большинства задач является Метод 1 (Макеты с данными) в сочетании с проверкой первого запуска. Это обеспечивает автономность приложения и предсказуемость результата для конечного пользователя.

← На главную