Как быстро и эффективно перенести данные из базы 1С на мобильное устройство?

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

Разработка мобильных приложений на платформе 1С — задача увлекательная, но часто начинающие разработчики сталкиваются с проблемой: конфигурация успешно опубликована и установлена на смартфон, но база данных остается пустой. В этой статье мы подробно разберем, как «без шума и пыли» перенести справочники, документы и другие данные с вашего компьютера на мобильное устройство, рассмотрим современные механизмы платформы и выясним, почему привычные методы (вроде выгрузки .dt) здесь не работают.

Метод 1. Автоматический REST-интерфейс (OData) — самый быстрый путь

Если вам нужно передать данные максимально быстро, не создавая сложные механизмы обмена, проанализируем возможность использования стандартного интерфейса OData. Это штатный механизм 1С, который позволяет обращаться к данным базы через HTTP-запросы без написания единой строчки кода на стороне сервера.

Разберем по шагам, как это включить:

  1. Откроем конфигуратор основной базы на ПК.
  2. Перейдем в меню Администрирование — Публикация на веб-сервере.
  3. На вкладке HTTP-сервисы установим флажок Публиковать стандартный интерфейс OData.
  4. В поле Состав выберем те справочники и документы, которые должны быть доступны мобильному приложению.

Теперь мобильное приложение может запрашивать данные в формате JSON. Рассмотрим пример того, как программно получить данные из мобильного приложения, используя HTTPСоединение:


// Пример получения данных через OData в мобильном приложении
Соединение = Новый HTTPСоединение("адрес_вашего_сервера", , "Логин", "Пароль");
Запрос = Новый HTTPЗапрос("/ИмяБазы/odata/standard.odata/Catalog_Номенклатура?$format=json");
Ответ = Соединение.Получить(Запрос);

Если Ответ.КодСостояния = 200 Тогда
    // Обрабатываем полученный JSON
КонецЕсли;

Метод 2. Мобильный клиент с автономным использованием

Начиная с версии платформы 8.3.15, 1С предлагает наиболее мощное решение — автономный режим. Это именно то, о чем мечтал автор темы: система сама создает «отсеченную» базу на мобильном устройстве и сама синхронизирует данные. Рассмотрим подробнее, как это работает.

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

Метод 3. Создание собственных HTTP-сервисов

Если стандартный OData кажется вам избыточным или небезопасным, проанализируем создание собственного HTTP-сервиса. Это наиболее гибкий путь, позволяющий точно контролировать, какие данные и в каком объеме улетают на мобильное устройство.

Рассмотрим структуру простейшего сервиса для выгрузки справочника:

  1. Создадим в конфигурации объект HTTP-сервис.
  2. Добавим шаблон ресурса, например, /get_data.
  3. Добавим метод GET и напишем обработчик:

Функция ДанныеGET(Запрос)
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    
    Выборка = Справочники.Номенклатура.Выбрать();
    // Сериализуем данные в JSON
    ЗаписатьJSON(ЗаписьJSON, Выборка); 
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());
    Возврат Ответ;
КонецФункции

Метод 4. Обмен через файлы и работа с «песочницей» iOS

Иногда возникают ситуации, когда прямой связи между телефоном и сервером нет, и данные нужно передать «файликом». Рассмотрим, как обойти ограничения файловой системы, особенно на устройствах Apple.

Проанализируем проблему песочницы: в iOS каждое приложение имеет доступ только к своей папке. Чтобы ваше мобильное приложение 1С увидело файл, закинутый вручную, выполним следующие настройки:

  1. В конфигураторе мобильного приложения откроем Свойства конфигурации.
  2. Найдем раздел Использование мобильных возможностей.
  3. Установим флажок Обмен файлами.

После этого папка приложения станет видимой в системном приложении «Файлы» на iPhone. Вы можете сериализовать данные на ПК в XML или JSON, упаковать их в Zip-архив для уменьшения объема и поместить в эту папку. Мобильное приложение сможет считать его с помощью команды НайтиФайлы() и обработать через ЧтениеJSON или ЧтениеXML.

Почему нельзя просто перенести файл .dt?

Выясним причину, по которой классический способ переноса базы через .dt не работает для мобильной платформы. Мобильная платформа 1С использует базу данных SQLite, в то время как десктопная версия работает на файловой СУБД 1С или клиент-серверных СУБД (MS SQL, PostgreSQL).

Структура таблиц, индексов и механизмов хранения данных в SQLite принципиально отличается. Файл .dt — это логический образ базы, который требует развертывания через полноценный движок «взрослой» 1С. Поэтому перенос возможен только на уровне данных (содержимого), а не на уровне файла базы данных.

Рекомендации по выбору метода

Подведем итог и выберем оптимальный путь для вашей задачи:

Помните, что для мобильных устройств критически важен объем передаваемых данных. Всегда старайтесь использовать JSON вместо XML и передавайте только те реквизиты, которые действительно необходимы на мобильном устройстве.

← На главную