Создание мобильного приложения для сотрудников «в полях» — задача, требующая четкого понимания того, как данные будут перемещаться между центральной базой и смартфоном. В данном материале мы разберем основные подходы к разработке мобильного решения на платформе «1С:Предприятие 8.3», проанализируем способы авторизации, передачи данных и работы с мультимедиа.
Прежде чем приступать к написанию кода, нам необходимо определиться с технологическим стеком. Рассмотрим два основных варианта, которые предлагает 1С.
1. Мобильный клиент. Это фактически «тонкий клиент» для смартфона. Он напрямую подключается к вашей основной базе. Преимущество заключается в том, что вам практически не нужно писать отдельный код для мобильного приложения — формы основной базы адаптируются под экран телефона. Однако для работы требуется постоянный и стабильный интернет. В современных версиях существует «Мобильный клиент с автономным режимом», который позволяет работать без сети, синхронизируя данные при появлении связи. Это наиболее простой путь, если конфигурация построена на управляемых формах.
2. Мобильная платформа. В этом случае мы создаем отдельную, максимально облегченную конфигурацию, которая устанавливается на устройство как самостоятельное приложение. Преимущество — полная независимость от наличия интернета и высокая скорость работы интерфейса. Минус — необходимость разработки механизмов обмена данными (синхронизации) между основной базой и мобильным приложением.
Проанализируем ситуацию: для техников, работающих в подвалах или на удаленных объектах, где связь может быть нестабильной, чаще выбирают именно Мобильную платформу с механизмом обмена через HTTP-сервисы.
Вместо сложных планов обмена для простых задач (получить список дел и вернуть статус) эффективнее использовать HTTP-запросы. Разберем по шагам, как это реализовать.
Сначала в основной базе необходимо создать HTTP-сервис. Он будет выступать «шлюзом» для мобильного приложения. Рассмотрим пример кода на стороне основной базы для получения списка задач:
Функция СписокЗадачГет(Запрос)
Параметры = Запрос.ПараметрыЗапроса;
ТехникИД = Параметры.Получить("ИдентификаторТехника");
ЗапросКБД = Новый Запрос;
ЗапросКБД.Текст =
"ВЫБРАТЬ
| Задачи.Ссылка КАК ИД,
| Задачи.Наименование КАК Тема,
| Задачи.Описание КАК ТекстЗадачи
|ИЗ
| Задача.ЗадачиТехникам КАК Задачи
|ГДЕ
| Задачи.Исполнитель = &Техник
| И Задачи.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗадач.НаИсполнении)";
ЗапросКБД.УстановитьПараметр("Техник", ТехникИД);
Результат = ЗапросКБД.Выполнить().Выгрузить();
// Сериализация в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
СтрокаJSON = ЗаписьJSON.Закрыть();
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(СтрокаJSON);
Возврат Ответ;
КонецФункции
На стороне мобильного приложения мы используем объект HTTPСоединение для получения этих данных. После получения строки JSON мы десериализуем её в коллекцию значений и отображаем технику.
Разберем вопрос авторизации. Переносить весь справочник Пользователи в мобильную базу нецелесообразно. Рассмотрим более простые и эффективные способы:
СредстваБиометрическойАутентификации. Это позволит технику входить в приложение по отпечатку пальца или FaceID, что крайне удобно в полевых условиях.Одной из ключевых задач является прикрепление фотоотчета к выполненной задаче. Выясним, как передать картинку с мобильного устройства в основную базу, чтобы не «раздуть» её размер.
Проанализируем процесс: современные смартфоны делают снимки высокого разрешения. Перед отправкой их обязательно нужно сжать. Рассмотрим пример кода на мобильной платформе:
// Получаем снимок с камеры
ДанныеСнимка = СредстваМультимедиа.СделатьФотоснимок();
Если ДанныеСнимка <> Неопределено Тогда
// Сжимаем картинку для экономии трафика
КартинкаОбъект = Новый Картинка(ДанныеСнимка.Хранилище);
СжатаяКартинка = КартинкаОбъект.Преобразовать(ФорматКартинки.JPEG, 800, 600); // Ограничиваем размер
ДвоичныеДанные = СжатаяКартинка.ПолучитьДвоичныеДанные();
СтрокаBase64 = Base64Строка(ДвоичныеДанные);
// Передаем через POST запрос
Запрос = Новый HTTPЗапрос("/hs/tasks/upload_photo");
Запрос.УстановитьТелоИзСтроки(СтрокаBase64);
// Добавляем в заголовки ИД задачи
Запрос.Заголовки.Вставить("TaskID", Строка(Объект.СсылкаНаЗадачу));
Соединение = Новый HTTPСоединение("myserver.com");
Ответ = Соединение.ОтправитьДляОбъекта(Запрос);
КонецЕсли;
Важный совет: В основной базе (на БСП) настройте хранение присоединенных файлов не в самой базе данных, а в томах на диске. Это предотвратит быстрый рост размера файла .mdf и сохранит производительность системы при накоплении тысяч фотографий от техников.
Для того чтобы мобильное приложение увидело основную базу, её необходимо опубликовать на веб-сервере (Apache или IIS). Рассмотрим этот процесс:
HTTP-сервиса.Для получения готового файла установки (.apk для Android) рекомендуется использовать «Сборщик мобильных приложений» от 1С. Это специальная конфигурация, которая автоматизирует процесс сборки, избавляя вас от ручной настройки Android SDK и Java Development Kit. Вы просто загружаете свою мобильную конфигурацию, иконки и нажимаете кнопку «Собрать».
Чтобы сделать приложение по-настоящему полезным, рассмотрим внедрение следующих функций:
Push-уведомления: Не заставляйте техников проверять приложение каждые 15 минут. Используйте интеграцию с Firebase Cloud Messaging (FCM). Как только диспетчер назначает новую задачу, платформа 1С отправит сигнал на сервер Google, и у техника мгновенно всплывет сообщение на экране, даже если приложение закрыто.
Геолокация: Вы можете автоматически записывать координаты в момент нажатия кнопки «Исполнено». Это послужит подтверждением того, что сотрудник действительно находился по адресу клиента. В 1С это реализуется через объект СредстваГеопозиционирования.
Сканирование штрихкодов: Если на оборудовании клиента есть инвентарные номера в виде штрихкодов, техник может просто навести камеру. Мобильная платформа 1С имеет встроенный сканер, который возвращает строку с кодом, позволяя мгновенно найти нужную задачу или карточку оборудования в базе.
Таким образом, начав с простых HTTP-запросов и выбора правильной стратегии хранения данных, вы сможете создать мощный инструмент для автоматизации работы выездного персонала, обеспечив прозрачность процессов для руководства и удобство для исполнителей.