Как устроена архитектура и взаимодействие компонентов в автономном мобильном приложении 1С

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

При разработке мобильных решений на платформе 1С:Предприятие часто возникает вопрос: как именно распределяются компоненты системы во время выполнения программы на смартфоне или планшете? Нужно ли поднимать веб-сервер (Apache или IIS) для работы автономного приложения, где физически хранится база данных и как правильно отразить архитектуру решения на диаграмме размещения (UML Deployment Diagram)?

Разберем по шагам внутреннее устройство мобильного приложения 1С, выясним особенности выполнения клиентского и серверного кода на мобильном устройстве и определим состав компонентов автономной системы.

Архитектурная модель автономного мобильного приложения 1С

Классическое десктопное или клиент-серверное приложение 1С построено по трехуровневой схеме: тонкий клиент взаимодействует с кластером серверов 1С через локальную сеть или веб-сервер, а сервер 1С обращается к промышленной СУБД. В случае автономного мобильного приложения (скомпилированного в пакет .apk для Android или .ipa для iOS) все эти уровни функционируют совершенно иначе.

Рассмотрим ключевые особенности архитектуры мобильного приложения:

  1. Архитектура In-Process: В мобильной платформе 1С сохраняется стандартное логическое разделение логики на клиентскую и серверную части, однако физически и клиент, и встроенный сервер 1С выполняются внутри одного-единственного системного процесса операционной системы мобильного устройства.
  2. Локальная СУБД: В качестве встроенного хранилища данных мобильная платформа использует реляционную базу данных SQLite. Все прикладные объекты конфигурации (справочники, документы, регистры накопления, регистры сведений) транслируются в таблицы SQLite во внутренней изолированной памяти приложения (Sandbox).
  3. Отсутствие внешнего веб-сервера во время работы: В автономном режиме мобильное приложение не требует подключения к Apache, IIS или внешнему серверу 1С. Все вызовы процедур с директивами &НаСервере выполняются локально в оперативной памяти мобильного процессора.

Как клиент и сервер взаимодействуют внутри мобильного устройства

Проанализируем, что происходит, когда пользователь нажимает кнопку на форме или выполняет запись элемента справочника в автономном мобильном приложении:

  1. Интерфейсный уровень (Клиент): Мобильный клиент платформы 1С обрабатывает пользовательский ввод, отрисовывает элементы управляемой формы и выполняет процедуры с директивой &НаКлиенте.
  2. Внутрипроцессный вызов сервера: При вызове серверной функции (директива &НаСервере или &НаСервереБезКонтекста) платформа не инициирует сетевых запросов по протоколам TCP/IP или HTTP. Передача параметров происходит внутри оперативной памяти устройства между потоками одного процесса.
  3. Уровень бизнес-логики (Сервер): Встроенный серверный модуль платформы выполняет инструкции языка 1С, рассчитывает алгоритмы и формирует запросы к локальной базе данных.
  4. Уровень доступа к данным: Запросы языка 1С транслируются во внутренние SQL-запросы к встроенному движку SQLite. Движок СУБД выполняет чтение или транзакционную запись данных в файлы локальной базы, расположенные во флеш-памяти мобильного устройства.

Посмотрим на типовой пример кода обработки данных в автономном мобильном приложении, где логика четко разделена между контекстами:


&НаКлиенте
Процедура ЗаписатьПоказания(Команда)
    // Клиентская часть: подготовка данных формы
    ПараметрыЗаписи = Новый Структура;
    ПараметрыЗаписи.Вставить("Период", ТекущаяДата());
    ПараметрыЗаписи.Вставить("Значение", Объект.ТекущееЗначение);
    
    // Внутрипроцессный вызов сервера
    ЗаписатьНаСервере(ПараметрыЗаписи);
    
    ПоказатьОповещениеПользователя("Успех", , "Данные успешно сохранены в локальную базу SQLite!");
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗаписатьНаСервере(ПараметрыЗаписи)
    // Серверная часть: запись в локальный регистр сведений
    МенеджерЗаписи = РегистрыСведений.ПоказанияДатчиков.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ПараметрыЗаписи.Период;
    МенеджерЗаписи.Значение = ПараметрыЗаписи.Значение;
    МенеджерЗаписи.Записать(Истина);
КонецПроцедуры

Компоненты для диаграммы размещения (UML Deployment Diagram)

Если перед вами стоит задача спроектировать или документировать архитектуру автономного приложения с помощью диаграммы размещения UML, выделим физические и логические узлы системы:

  1. Узел «Мобильное устройство» (Node: Mobile Device): Представляет собой физическое вычислительное устройство под управлением ОС Android или iOS.
  2. Среда исполнения (Execution Environment): Контейнер процесса мобильного приложения 1С, изолированный песочницей операционной системы.
  3. Артефакты и программные компоненты внутри узла:
    1. Мобильный клиент 1С (Component): Отвечает за пользовательский интерфейс, логику форм и работу с аппаратными возможностями устройства (камера, геопозиционирование, сканер штрихкодов).
    2. Встроенный сервер 1С (Component): Исполняет серверные модули, контролирует транзакции и транслирует запросы 1С.
    3. Движок СУБД SQLite (Component): Библиотека управления локальной реляционной базой данных.
    4. Файлы базы данных (Database / File Storage): Локальное дисковое хранилище данных конфигурации и таблиц SQLite во внутренней директории приложения.
  4. Внешние коммуникации (Communication Path): Если приложению требуется переходить по внешним гиперссылкам (например, открытие видеохостингов или внешних сайтов), мобильный клиент отправляет прямой запрос в сетевой стек операционной системы через встроенное поле HTML-документа или системный браузер. Промежуточный сервер 1С или Apache для таких обращений не задействуется.

Когда требуется веб-сервер и публикация

Выясним разницу между способами доставки и вариантами архитектуры мобильных решений 1С, чтобы избежать путаницы:

  1. Автономное мобильное приложение (Standalone): Собирается с помощью сборщика мобильных приложений в готовый дистрибутив. База данных живет на устройстве. Веб-сервер не нужен вообще, за исключением случаев, когда разработчик сам реализует обмен через Web-сервисы или HTTP-сервисы с центральной базой.
  2. Мобильное приложение для разработки: При отладке мобильная конфигурация может публиковаться на веб-сервере (Apache или IIS). При этом веб-сервер служит исключительно инструментом доставки метаданных в мобильное приложение для разработчиков при первичном запуске или обновлении.
  3. Мобильный клиент (Онлайн-клиент): В этом режиме мобильное приложение не имеет собственной локальной базы данных, а является полноценным терминальным клиентом для центральной базы, работающим в постоянном онлайн-соединении через Apache/IIS.

Таким образом, полноценное автономное мобильное приложение 1С содержит в себе все три уровня архитектуры (интерфейс, серверная бизнес-логика и СУБД SQLite) в рамках одного процесса устройства и способно функционировать полностью без интернета и без внешних серверов.

← На главную