Разработка для мобильных устройств на платформе 1С:Предприятие имеет свои архитектурные особенности, которые значительно отличаются от разработки обычных десктопных приложений. Одной из наиболее частых задач является получение данных из внешней базы данных SQL (MS SQL, PostgreSQL, MySQL) и их отображение на экране смартфона или планшета. В этой статье мы подробно разберем, как правильно выстроить архитектуру такого приложения, почему прямое подключение невозможно и какие инструменты нам понадобятся.
Рассмотрим главную техническую особенность мобильной платформы 1С. В отличие от полноценного сервера 1С или толстого клиента, мобильное приложение не поддерживает механизм Внешних источников данных для прямого взаимодействия с таблицами SQL через ODBC-драйверы. Это связано с ограничениями мобильных операционных систем Android и iOS, а также самой архитектурой мобильной платформы 1С.
Проанализируем доступные пути решения этой задачи. Единственным правильным и стабильным способом является создание промежуточного звена — Middle-end. В качестве такого звена выступает основная информационная база 1С, опубликованная на веб-сервере, которая имеет доступ к SQL-базе. Мобильное приложение обменивается данными с этой базой по протоколу HTTP, а она, в свою очередь, делает запросы к SQL и возвращает результат.
Разберем по шагам, как настроить взаимодействие через HTTP-сервисы. Это наиболее современный и быстрый способ обмена данными в среде 1С. Рассмотрим логику процесса:
HTTP-сервис. В нем описываются шаблоны URL и методы (GET, POST).HTTPЗапрос к серверу, получает JSON-строку и десериализует ее в локальные таблицы или объекты.Посмотрим на пример кода для отправки запроса из мобильного приложения:
&НаКлиенте
Процедура ПолучитьДанныеИзSQL()
Соединение = Новый HTTPСоединение("myserver.com", , "user", "password");
Запрос = Новый HTTPЗапрос("/mybase/hs/v1/getdata?id=123");
Попытка
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
// Обработка полученных данных
КонецЕсли;
Исключение
Сообщить("Ошибка связи с сервером");
КонецПопытки;
КонецПроцедуры
Выясним разницу между двумя технологиями разработки, так как от этого зависит объем написанного кода.
Мобильная платформа — это полностью автономное приложение. У него есть своя локальная база данных (SQLite). Вы должны сами запрограммировать всю логику синхронизации: когда и как данные загружаются из SQL и как они сохраняются на устройстве. Это решение идеально для работы в условиях плохого интернета или оффлайн.
Мобильный клиент — это, по сути, "окно" в вашу основную базу. Он требует постоянного интернет-соединения. Плюс в том, что если в основной базе у вас уже настроены формы для работы с SQL, мобильный клиент отобразит их автоматически с минимальными доработками интерфейса. Вам не нужно писать код обмена данными, так как клиент работает напрямую с объектами сервера.
Для того чтобы ваше решение заработало на реальном Android-устройстве, необходимо выполнить ряд обязательных действий. Пройдемся по ним:
1. Настройка веб-сервера. Для публикации информационной базы вам понадобится Apache или IIS. Без этого мобильное устройство не сможет достучаться до кода 1С. При публикации обязательно установите флажок "Публиковать HTTP-сервисы" и "Публиковать мобильное приложение".
2. Установка Android SDK и JDK. Чтобы собрать .apk файл, 1С должна использовать стандартные инструменты разработки Android. Вам потребуется скачать Android Studio и настроить пути к SDK в параметрах сборщика 1С.
3. Использование сборщика мобильных приложений. Фирма 1С предоставляет специальную конфигурацию — "Сборщик мобильных приложений". В ней вы указываете параметры своего приложения (имя, иконку, версию платформы), и она автоматически формирует готовый файл для установки на телефон.
Проанализируем технические сложности, с которыми сталкиваются новички при первом запуске приложения на Android 9 и выше. Современные версии Android по умолчанию запрещают передачу данных по незащищенному протоколу HTTP. У вас есть два пути:
cleartextTraffic для вашего домена.Также стоит помнить об асинхронности. В мобильной платформе 1С нельзя использовать модальные окна. Вместо функции Вопрос() нужно использовать ПоказатьВопрос(), передавая в нее описание оповещения. Это критически важно, иначе приложение будет аварийно завершаться при попытке взаимодействия с пользователем.
При работе с внешними SQL-базами через мобильное приложение старайтесь минимизировать объем передаваемых данных. Не запрашивайте всю таблицу целиком. Используйте пагинацию (постраничный вывод) и фильтрацию на стороне сервера. Помните, что ресурсы мобильного устройства (память и процессор) ограничены по сравнению с сервером.
Рассмотрим структуру JSON-ответа, который удобно обрабатывать в 1С:
{
"status": "success",
"data": [
{"id": 1, "name": "Товар 1", "price": 100},
{"id": 2, "name": "Товар 2", "price": 200}
],
"timestamp": "2023-10-27T10:00:00"
}
Используя объект ЗаписьJSON на сервере, вы легко сформируете такую структуру из результата запроса к SQL. Это обеспечит высокую скорость работы и простоту отладки вашего мобильного решения.