Как разработать мобильное приложение на 1С для работы с внешней базой SQL

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

Разработка для мобильных устройств на платформе 1С:Предприятие имеет свои архитектурные особенности, которые значительно отличаются от разработки обычных десктопных приложений. Одной из наиболее частых задач является получение данных из внешней базы данных SQL (MS SQL, PostgreSQL, MySQL) и их отображение на экране смартфона или планшета. В этой статье мы подробно разберем, как правильно выстроить архитектуру такого приложения, почему прямое подключение невозможно и какие инструменты нам понадобятся.

Выбор архитектурного решения: почему нельзя подключиться к SQL напрямую

Рассмотрим главную техническую особенность мобильной платформы 1С. В отличие от полноценного сервера 1С или толстого клиента, мобильное приложение не поддерживает механизм Внешних источников данных для прямого взаимодействия с таблицами SQL через ODBC-драйверы. Это связано с ограничениями мобильных операционных систем Android и iOS, а также самой архитектурой мобильной платформы 1С.

Проанализируем доступные пути решения этой задачи. Единственным правильным и стабильным способом является создание промежуточного звена — Middle-end. В качестве такого звена выступает основная информационная база 1С, опубликованная на веб-сервере, которая имеет доступ к SQL-базе. Мобильное приложение обменивается данными с этой базой по протоколу HTTP, а она, в свою очередь, делает запросы к SQL и возвращает результат.

Реализация обмена через HTTP-сервисы

Разберем по шагам, как настроить взаимодействие через HTTP-сервисы. Это наиболее современный и быстрый способ обмена данными в среде 1С. Рассмотрим логику процесса:

  1. На стороне сервера: В основной конфигурации 1С создается объект HTTP-сервис. В нем описываются шаблоны URL и методы (GET, POST).
  2. Запрос к SQL: Внутри метода HTTP-сервиса пишется код, который обращается к внешней базе данных через стандартный механизм внешних источников данных или через ADO-соединение (если сервер работает на Windows).
  3. Формирование ответа: Данные из SQL преобразуются в структуру 1С, которая затем сериализуется в формат JSON.
  4. На стороне мобильного приложения: Приложение отправляет 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. У вас есть два пути:

Также стоит помнить об асинхронности. В мобильной платформе 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. Это обеспечит высокую скорость работы и простоту отладки вашего мобильного решения.

← На главную