Вопрос интеграции Библиотеки стандартных подсистем (БСП) актуальных версий (например, 3.0 и выше) в мобильную платформу является одной из самых сложных задач для разработчика 1С. Многие сталкиваются с тем, что стандартные механизмы обмена, привычные для «больших» конфигураций, отказываются работать на мобильных устройствах или приводят к критическому падению производительности. В этой статье мы разберем, почему попытка прямого переноса подсистем БСП в мобильное приложение — это зачастую тупиковый путь, и проанализируем современные архитектурные решения для реализации обмена данными.
Рассмотрим первопричину сложностей. Библиотека стандартных подсистем проектировалась для полноценных серверов и десктопных клиентов. Мобильная платформа 1С, особенно старых версий (таких как 8.3.15), имеет ряд существенных ограничений:
Конвертацию данных 2.1 базируется на чтении и записи больших XML-файлов. Процесс парсинга гигабайтных (или даже мегабайтных) файлов на смартфоне крайне медленный и ресурсозатратный.Посмотрим на ситуацию со стороны механизмов обмена. Автор темы пытался использовать подсистему обмена данными через КД. Проанализируем, почему это не сработало. В актуальных версиях БСП подсистема обмена глубоко интегрирована с планами обмена и фоновыми заданиями, работа которых на мобильной платформе имеет свою специфику и ограничения по времени исполнения.
Традиционный подход с использованием КД 2.1 подразумевает выгрузку данных в файл и его последующую загрузку. В мобильной реальности это плохая идея по следующим причинам:
Вместо этого разберем более эффективный механизм — Конвертацию данных 3.0. Она базируется на технологии XDTO. В КД 3.0 данные передаются не в виде жесткой структуры файла, а в виде объектов (сообщений), формат которых описан в XDTO-пакете. Это нативный и очень быстрый механизм для платформы 1С, который гораздо легче переносится на мобильные устройства.
Наиболее современным и рекомендуемым способом обмена для мобильных приложений является использование HTTP-сервисов в связке с форматом JSON. Выясним, почему это решение считается оптимальным:
ЗаписьJSON и ЧтениеJSON).Рассмотрим пример того, как может выглядеть запрос данных через HTTP-сервис в мобильном приложении:
&НаКлиенте
Процедура ПолучитьДанныеССервера()
Соединение = Новый HTTPСоединение("myserver.ru", , "user", "password");
Запрос = Новый HTTPЗапрос("/v1/get_data?type=orders");
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
// Обработка полученной структуры данных
КонецЕсли;
КонецПроцедуры
Проанализируем этот код: мы не загружаем всю библиотеку обмена, а используем нативные возможности платформы, что гарантирует моментальный отклик интерфейса.
Если ваша задача — получить в мобильном устройстве весь функционал БСП (например, присоединенные файлы, бизнес-процессы, историю изменений), то стоит рассмотреть смену технологии с Мобильного приложения на Мобильный клиент.
В чем принципиальная разница? Мобильный клиент — это, по сути, тонкий клиент для смартфона. Весь код (включая БСП) исполняется на мощном сервере, а на телефон передается только описание интерфейса. В этом случае интеграция БСП проходит бесшовно, так как платформа сама адаптирует формы под мобильный экран. Это избавляет от необходимости переписывать модули обмена и мучиться с совместимостью типов в 8.3.15.
Если использование Мобильного клиента невозможно, и вам все же нужна часть функционала БСП в автономном мобильном приложении, придерживайтесь стратегии «выборочного копирования»:
Windows-специфичные объекты или модальные окна.Резюме: Пытаться «впихнуть» БСП 3.0 в мобильное приложение — это борьба с архитектурой платформы. Рациональнее оставить тяжелую логику на стороне сервера, реализовав API через HTTP/JSON, или перевести пользователей на Мобильный клиент, где БСП работает «из коробки».