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

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

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

Вариант 1. Вызов вспомогательной формы по тапу

Проанализируем наиболее гибкий с точки зрения дизайна вариант — открытие отдельной формы с набором крупных кнопок при обычном нажатии на строку списка. Этот метод позволяет не перегружать основной экран и предоставить пользователю понятный выбор действий.

Разберем реализацию этого метода по шагам:

  1. В основной форме списка перехватываем событие Выбор или ПриАктивизацииСтроки (если требуется реакция на простое выделение).
  2. Собираем необходимые данные текущей строки (например, ссылку на документ или статус).
  3. Открываем вспомогательную форму, передавая туда параметры.

Для создания эффекта «выезжающего меню» в настройках открываемой формы можно использовать свойство ВариантОткрытия. Использование отдельной формы дает нам возможность разместить на ней информативные иконки и дополнительные сведения о строке, чтобы пользователь не забыл, с каким объектом он работает. Посмотрим на пример кода вызова такой формы:


&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура("Ключ", ВыбраннаяСтрока);
    ОткрытьФорму("ОбщаяФорма.МенюДействийСоСтрокой", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры

Преимущество этого метода в том, что мы полностью контролируем визуальную часть. Мы можем нарисовать кнопки любого размера, добавить пояснительные надписи и сгруппировать команды по смыслу.

Вариант 2. Использование контекстного меню и жеста свайпа

Выясним, как использовать стандартные возможности мобильной платформы, которые уже привычны пользователям смартфонов. Начиная с последних версий платформы 1С 8.3, мобильный клиент поддерживает жест свайп влево по строке списка для вызова контекстного меню.

Чтобы команды появились в этом меню, проанализируем настройки командной панели таблицы. Рассмотрим ключевые моменты:

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

Вариант 3. Выпадающее меню (Шторка) через ПоказатьВыборИзМеню

Если создание отдельной формы кажется слишком трудоемким, рассмотрим механизм ПоказатьВыборИзМеню(). В мобильном интерфейсе этот метод вызывает не маленькое окошко, а полноценную «шторку» (Curtain), которая плавно выезжает снизу экрана.

Проанализируем ситуацию: нам нужно предложить пользователю выбор из трех действий: «Отгрузить», «Отменить» и «Распечатать». Реализуем это следующим образом:


&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    
    СписокКоманд = Новый СписокЗначений;
    СписокКоманд.Добавить("Отгрузить", "Выполнить отгрузку");
    СписокКоманд.Добавить("Отменить", "Отменить заказ");
    СписокКоманд.Добавить("Печать", "Печать чека");
    
    Оповещение = Новый ОписаниеОповещения("ПослеВыбораКоманды", ЭтаФорма);
    ПоказатьВыборИзМеню(Оповещение, СписокКоманд, Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораКоманды(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
    Если ВыбранныйЭлемент = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    // Логика обработки выбранной команды
КонецПроцедуры

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

Вариант 4. Полная кастомизация через Поле HTML-документа

Для тех случаев, когда стандартных кнопок 1С недостаточно, разберем продвинутый вариант — вывод списка через ПолеHTMLДокумента. Это позволяет реализовать кнопки действий прямо внутри строки списка, как это сделано в большинстве современных мобильных приложений (например, иконка корзины или телефонная трубка рядом с контактом).

Для этого в каждой строке HTML-кода мы прописываем обработчик клика, который передает управление обратно в 1С. Посмотрим, как может выглядеть схема взаимодействия:

  1. Формируем HTML-текст списка, где для каждой кнопки прописан уникальный ID.
  2. В событии ПриНажатии поля HTML-документа анализируем данные события.
  3. Выполняем соответствующую процедуру 1С.

Преимущество: Полная свобода в верстке и дизайне. Недостаток: Требуется знание HTML/CSS и более сложная отладка по сравнению с обычными формами.

Управление системными жестами

Часто при реализации сложных интерфейсов возникает вопрос: как заблокировать системный жест «Назад» (свайп от левого края), чтобы пользователь случайно не закрыл форму? Рассмотрим проверенные способы:

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

← На главную