Разработка для мобильных устройств в экосистеме 1С значительно отличается от классического десктопного программирования. Перед разработчиком встает выбор между тремя основными технологиями: Мобильное приложение (МП), Мобильный клиент (МК) и Мобильный клиент с автономным режимом (МКА). Каждый из этих вариантов имеет свои трудозатраты, особенности лицензирования и нюансы работы с оборудованием. В этой статье мы подробно разберем, как сделать правильный выбор, и рассмотрим практические приемы настройки интерфейса под мобильные дисплеи.
Рассмотрим основные концепции, чтобы понять, какая архитектура лучше подходит для ваших задач:
Проанализируем трудозатраты: быстрее всего создается Мобильный клиент, так как данные уже под рукой. Если же требуется работа на складе с «мертвыми зонами» Wi-Fi, придется смотреть в сторону МП или МКА.
Разберем конкретные проблемы, с которыми сталкиваются программисты при верстке форм под маленькие экраны, и способы их решения, предложенные опытными разработчиками:
1. Управление таблицами и списками
Частая проблема: заголовки колонок прокручиваются вместе с данными, что неудобно. Чтобы зафиксировать шапку, установите свойство ВариантУправленияВысотой в значение В строках таблицы. Если нужно убрать лишние стрелки выбора в последних колонках, используйте свойство таблицы РежимВыбора.
Для реализации динамических списков с хитрым оформлением активно используйте группировки колонок и условное оформление. Рассмотрим пример, когда нужно скрыть или показать элементы в зависимости от иерархии:
// В обработчике ПриАктивизацииСтроки для дерева
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
// Управление разворотом узла через текущего родителя
Элемент.ТекущийРодитель = ТекущиеДанные.Ссылка;
КонецЕсли;
КонецПроцедуры
2. Эмуляция выпадающих списков и диалогов
Штатный выбор из списка на мобильных устройствах часто открывается на весь экран, что раздражает пользователя. Чтобы сделать выбор «по месту», можно использовать декорации (надписи), размещенные в свертываемых группах. Это создаст эффект выпадающего меню без открытия новых окон.
3. Программное управление фокусом и вводом
Чтобы при открытии формы пользователь сразу мог сканировать или вводить данные, необходимо программно установить фокус:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтаФорма.ТекущийЭлемент = Элементы.ПольВводаШтрихкода;
ЭтаФорма.НачатьРедактированиеЭлемента();
КонецПроцедуры
Выясним причину, по которой на некоторых устройствах (например, дешевых китайских ТСД) не работают кнопки или сканер. Проблема часто кроется в методе передачи данных. Есть два основных пути:
Если аппаратные кнопки не отрабатывают штатно, рассмотрите использование Внешних компонент (ВК). Они позволяют обращаться к нативному API Android и перехватывать нажатия функциональных клавиш, которые 1С «из коробки» может не видеть.
Посмотрим на возможности, которые появились в последних версиях мобильной платформы и помогают сделать приложение профессиональным:
Сборка мобильного клиента: Вы можете собрать индивидуальный APK-файл, где адрес сервера уже «зашит». Пользователю не нужно вводить настройки — он просто скачивает приложение вашего предприятия с иконкой компании и сразу начинает работу.
Работа в фоне и геозоны: Мобильная 1С теперь умеет собирать координаты в фоновом режиме. Это позволяет реализовать автоматическое прибытие курьера на точку. Достаточно использовать механизмы СредстваГеолокации.
Биометрия: Для защиты данных на ТСД или личных смартфонах сотрудников используйте СредстваБиометрическойАутентификации. Это позволит входить в систему по отпечатку пальца или FaceID, что гораздо быстрее ввода пароля на маленькой экранной клавиатуре.
Проанализируем ситуацию с передачей данных. Мобильные сети нестабильны, поэтому для обмена данными (особенно в МП) рекомендуется использовать сжатие. Рассмотрим пример подготовки данных для отправки через HTTP:
// Пример упаковки данных перед отправкой
ДанныеДляОтправки = Новый ХранилищеЗначения(СтруктураДанных, Новый СжатиеДанных(9));
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеДляОтправки.Получить());
СтрокаЗапроса = ЗаписьJSON.Закрыть();
Важный совет по дизайну: Используйте векторные иконки в формате SVG. Они не теряют качества при масштабировании на разных экранах (от маленького ТСД до 10-дюймового планшета) и занимают гораздо меньше места в сборке, чем набор PNG-картинок.
Выбор между Мобильным приложением и Мобильным клиентом должен основываться на качестве связи на объекте. Однако, какую бы технологию вы ни выбрали, основное время будет затрачено на UI/UX. Помните, что складской работник не должен «искать» кнопки — интерфейс должен быть максимально простым, с крупными элементами и автоматическим переходом фокуса. Использование БПО (Библиотеки подключаемого оборудования) для мобильной платформы значительно упростит интеграцию со сканерами и принтерами этикеток, избавляя вас от необходимости писать собственные драйверы.