Разработка мобильного интерфейса на платформе 1С требует особого подхода к юзабилити. В отличие от десктопной версии, где у пользователя есть правая кнопка мыши и широкая командная панель, в мобильном приложении пространство ограничено, а основным инструментом взаимодействия являются жесты. Рассмотрим, как эффективнее всего реализовать вызов команд для конкретной строки списка, чтобы это было интуитивно понятно и эстетично.
Проанализируем наиболее гибкий с точки зрения дизайна вариант — открытие отдельной формы с набором крупных кнопок при обычном нажатии на строку списка. Этот метод позволяет не перегружать основной экран и предоставить пользователю понятный выбор действий.
Разберем реализацию этого метода по шагам:
Выбор или ПриАктивизацииСтроки (если требуется реакция на простое выделение).Для создания эффекта «выезжающего меню» в настройках открываемой формы можно использовать свойство ВариантОткрытия. Использование отдельной формы дает нам возможность разместить на ней информативные иконки и дополнительные сведения о строке, чтобы пользователь не забыл, с каким объектом он работает. Посмотрим на пример кода вызова такой формы:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура("Ключ", ВыбраннаяСтрока);
ОткрытьФорму("ОбщаяФорма.МенюДействийСоСтрокой", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
Преимущество этого метода в том, что мы полностью контролируем визуальную часть. Мы можем нарисовать кнопки любого размера, добавить пояснительные надписи и сгруппировать команды по смыслу.
Выясним, как использовать стандартные возможности мобильной платформы, которые уже привычны пользователям смартфонов. Начиная с последних версий платформы 1С 8.3, мобильный клиент поддерживает жест свайп влево по строке списка для вызова контекстного меню.
Чтобы команды появились в этом меню, проанализируем настройки командной панели таблицы. Рассмотрим ключевые моменты:
Использовать. Это подскажет платформе, что команда должна быть привязана к контексту конкретной записи.Важно: Помните, что свайп — это «скрытое» действие. Если пользователь не знает о его существовании, он может никогда не найти ваши команды. Поэтому свайп лучше использовать для второстепенных действий (например, «Удалить» или «Пометить»), а основные функции дублировать более явными способами.
Если создание отдельной формы кажется слишком трудоемким, рассмотрим механизм ПоказатьВыборИзМеню(). В мобильном интерфейсе этот метод вызывает не маленькое окошко, а полноценную «шторку» (Curtain), которая плавно выезжает снизу экрана.
Проанализируем ситуацию: нам нужно предложить пользователю выбор из трех действий: «Отгрузить», «Отменить» и «Распечатать». Реализуем это следующим образом:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СписокКоманд = Новый СписокЗначений;
СписокКоманд.Добавить("Отгрузить", "Выполнить отгрузку");
СписокКоманд.Добавить("Отменить", "Отменить заказ");
СписокКоманд.Добавить("Печать", "Печать чека");
Оповещение = Новый ОписаниеОповещения("ПослеВыбораКоманды", ЭтаФорма);
ПоказатьВыборИзМеню(Оповещение, СписокКоманд, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораКоманды(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
// Логика обработки выбранной команды
КонецПроцедуры
Такой интерфейс выглядит максимально «нативно» для мобильных ОС и автоматически подстраивается под темную или светлую тему оформления.
Для тех случаев, когда стандартных кнопок 1С недостаточно, разберем продвинутый вариант — вывод списка через ПолеHTMLДокумента. Это позволяет реализовать кнопки действий прямо внутри строки списка, как это сделано в большинстве современных мобильных приложений (например, иконка корзины или телефонная трубка рядом с контактом).
Для этого в каждой строке HTML-кода мы прописываем обработчик клика, который передает управление обратно в 1С. Посмотрим, как может выглядеть схема взаимодействия:
ID.ПриНажатии поля HTML-документа анализируем данные события.Преимущество: Полная свобода в верстке и дизайне. Недостаток: Требуется знание HTML/CSS и более сложная отладка по сравнению с обычными формами.
Часто при реализации сложных интерфейсов возникает вопрос: как заблокировать системный жест «Назад» (свайп от левого края), чтобы пользователь случайно не закрыл форму? Рассмотрим проверенные способы:
Выбирая между предложенными вариантами, ориентируйтесь на частоту использования команды. Для быстрых, повторяющихся действий идеально подходят свайпы. Для выбора из множества бизнес-операций лучше использовать выезжающую шторку или отдельную форму.