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

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

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

Выбор архитектуры: Мобильный клиент против Мобильной платформы

Прежде чем приступать к написанию кода, нам необходимо определиться с технологическим стеком. Рассмотрим два основных варианта, которые предлагает 1С.

1. Мобильный клиент. Это фактически «тонкий клиент» для смартфона. Он напрямую подключается к вашей основной базе. Преимущество заключается в том, что вам практически не нужно писать отдельный код для мобильного приложения — формы основной базы адаптируются под экран телефона. Однако для работы требуется постоянный и стабильный интернет. В современных версиях существует «Мобильный клиент с автономным режимом», который позволяет работать без сети, синхронизируя данные при появлении связи. Это наиболее простой путь, если конфигурация построена на управляемых формах.

2. Мобильная платформа. В этом случае мы создаем отдельную, максимально облегченную конфигурацию, которая устанавливается на устройство как самостоятельное приложение. Преимущество — полная независимость от наличия интернета и высокая скорость работы интерфейса. Минус — необходимость разработки механизмов обмена данными (синхронизации) между основной базой и мобильным приложением.

Проанализируем ситуацию: для техников, работающих в подвалах или на удаленных объектах, где связь может быть нестабильной, чаще выбирают именно Мобильную платформу с механизмом обмена через HTTP-сервисы.

Настройка обмена данными через HTTP-сервисы

Вместо сложных планов обмена для простых задач (получить список дел и вернуть статус) эффективнее использовать HTTP-запросы. Разберем по шагам, как это реализовать.

Сначала в основной базе необходимо создать HTTP-сервис. Он будет выступать «шлюзом» для мобильного приложения. Рассмотрим пример кода на стороне основной базы для получения списка задач:


Функция СписокЗадачГет(Запрос)
    Параметры = Запрос.ПараметрыЗапроса;
    ТехникИД = Параметры.Получить("ИдентификаторТехника");
    
    ЗапросКБД = Новый Запрос;
    ЗапросКБД.Текст = 
        "ВЫБРАТЬ
        |   Задачи.Ссылка КАК ИД,
        |   Задачи.Наименование КАК Тема,
        |   Задачи.Описание КАК ТекстЗадачи
        |ИЗ
        |   Задача.ЗадачиТехникам КАК Задачи
        |ГДЕ
        |   Задачи.Исполнитель = &Техник
        |   И Задачи.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗадач.НаИсполнении)";
    
    ЗапросКБД.УстановитьПараметр("Техник", ТехникИД);
    Результат = ЗапросКБД.Выполнить().Выгрузить();
    
    // Сериализация в JSON
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Результат);
    СтрокаJSON = ЗаписьJSON.Закрыть();
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки(СтрокаJSON);
    Возврат Ответ;
КонецФункции

На стороне мобильного приложения мы используем объект HTTPСоединение для получения этих данных. После получения строки JSON мы десериализуем её в коллекцию значений и отображаем технику.

Реализация авторизации пользователей

Разберем вопрос авторизации. Переносить весь справочник Пользователи в мобильную базу нецелесообразно. Рассмотрим более простые и эффективные способы:

  1. Привязка по уникальному идентификатору устройства (ИД): При первом входе техник вводит логин/пароль от основной базы. Основная база проверяет их и возвращает уникальный токен (GUID), который сохраняется в настройках мобильного приложения. Все последующие запросы идут с этим токеном.
  2. Биометрическая авторизация: В мобильной платформе можно использовать СредстваБиометрическойАутентификации. Это позволит технику входить в приложение по отпечатку пальца или FaceID, что крайне удобно в полевых условиях.
  3. QR-коды: Можно распечатать карточки с QR-кодом для каждого техника, содержащим зашифрованные данные для авторизации. Приложению останется только считать код камерой.

Работа с фотографиями и передача их в базу

Одной из ключевых задач является прикрепление фотоотчета к выполненной задаче. Выясним, как передать картинку с мобильного устройства в основную базу, чтобы не «раздуть» её размер.

Проанализируем процесс: современные смартфоны делают снимки высокого разрешения. Перед отправкой их обязательно нужно сжать. Рассмотрим пример кода на мобильной платформе:


// Получаем снимок с камеры
ДанныеСнимка = СредстваМультимедиа.СделатьФотоснимок();
Если ДанныеСнимка <> Неопределено Тогда
    // Сжимаем картинку для экономии трафика
    КартинкаОбъект = Новый Картинка(ДанныеСнимка.Хранилище);
    СжатаяКартинка = КартинкаОбъект.Преобразовать(ФорматКартинки.JPEG, 800, 600); // Ограничиваем размер
    
    ДвоичныеДанные = СжатаяКартинка.ПолучитьДвоичныеДанные();
    СтрокаBase64 = Base64Строка(ДвоичныеДанные);
    
    // Передаем через POST запрос
    Запрос = Новый HTTPЗапрос("/hs/tasks/upload_photo");
    Запрос.УстановитьТелоИзСтроки(СтрокаBase64);
    // Добавляем в заголовки ИД задачи
    Запрос.Заголовки.Вставить("TaskID", Строка(Объект.СсылкаНаЗадачу));
    
    Соединение = Новый HTTPСоединение("myserver.com");
    Ответ = Соединение.ОтправитьДляОбъекта(Запрос);
КонецЕсли;

Важный совет: В основной базе (на БСП) настройте хранение присоединенных файлов не в самой базе данных, а в томах на диске. Это предотвратит быстрый рост размера файла .mdf и сохранит производительность системы при накоплении тысяч фотографий от техников.

Публикация и сборка приложения

Для того чтобы мобильное приложение увидело основную базу, её необходимо опубликовать на веб-сервере (Apache или IIS). Рассмотрим этот процесс:

Для получения готового файла установки (.apk для Android) рекомендуется использовать «Сборщик мобильных приложений» от 1С. Это специальная конфигурация, которая автоматизирует процесс сборки, избавляя вас от ручной настройки Android SDK и Java Development Kit. Вы просто загружаете свою мобильную конфигурацию, иконки и нажимаете кнопку «Собрать».

Дополнительные возможности для автоматизации

Чтобы сделать приложение по-настоящему полезным, рассмотрим внедрение следующих функций:

Push-уведомления: Не заставляйте техников проверять приложение каждые 15 минут. Используйте интеграцию с Firebase Cloud Messaging (FCM). Как только диспетчер назначает новую задачу, платформа 1С отправит сигнал на сервер Google, и у техника мгновенно всплывет сообщение на экране, даже если приложение закрыто.

Геолокация: Вы можете автоматически записывать координаты в момент нажатия кнопки «Исполнено». Это послужит подтверждением того, что сотрудник действительно находился по адресу клиента. В 1С это реализуется через объект СредстваГеопозиционирования.

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

Таким образом, начав с простых HTTP-запросов и выбора правильной стратегии хранения данных, вы сможете создать мощный инструмент для автоматизации работы выездного персонала, обеспечив прозрачность процессов для руководства и удобство для исполнителей.

← На главную