Как настроить команды свайпа для строк списка в мобильном приложении 1С?

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

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

Механизм работы свайпа в мобильном клиенте и мобильном приложении

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

Чтобы заменить действия по умолчанию собственными командами (например, оставить только удаление строки), нам потребуется переопределить состав контекстного меню элемента формы.

Пошаговая настройка команд контекстного меню

Разберем по шагам, как убрать стандартные кнопки и добавить требуемое действие в конфигураторе:

  1. Откроем форму списка нужного объекта (например, справочника) в конфигураторе.
  2. В дереве элементов формы найдем таблицу динамического списка.
  3. Вызовем контекстное меню таблицы и выберем пункт Показать контекстное меню. Под элементом таблицы появится вложенная ветка КонтекстноеМеню.
  4. Перейдем в свойства элемента КонтекстноеМеню и снимем флаг Автозаполнение. Это действие отключит автоматическое добавление системных команд при свайпе.
  5. Добавим необходимую команду. Если требуется команда непосредственного удаления без предварительной пометки, перейдем на вкладку Команды формы, откроем раздел Стандартные команды -> Форма и перетащим команду Удалить внутрь ветки КонтекстноеМеню нашей таблицы.
  6. Если действие должно выполнять сложную логику, создадим пользовательскую команду формы и также перенесем ее в контекстное меню таблицы.

Проверка прав доступа для прямого удаления

Проанализируем важный нюанс, связанный с прямым удалением объектов. Стандартная команда Удалить (в отличие от команды УстановитьПометкуУдаления) требует наличия у пользователя роли с правом Интерактивное удаление для данного метаданного.

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

Особенности привязки команд: свойство ИспользованиеТекущейСтроки

Если мы используем собственную команду формы, а не стандартное действие, мобильная платформа может повести себя неожиданным образом: команда может не появиться в свайп-меню, а переместиться в общее меню «Еще» командной панели формы. Выясним причину такого поведения.

Чтобы команда воспринималась платформой именно как действие над выбранной строкой, у команды формы необходимо проверить свойство ИспользованиеТекущейСтроки. Установим для него значение ТолькоВКонтекстномМеню или ДополнительноВКонтекстномМеню. Это гарантирует, что система свяжет команду с контекстом текущей строки при свайпе.

Почему кнопки свайпа не меняют цвет фона?

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

В платформе 1С свойства оформления элементов (такие как ЦветФона, ЦветТекста и ЦветРамки) игнорируются для кнопок, расположенных внутри командных панелей и контекстных меню. Панель свайпа строится операционной системой по жестко заданным системным правилам или общей теме оформления мобильной платформы:

  1. Семантическая подсветка. Платформа нативно окрашивает кнопку свайпа в красный цвет только для некоторых встроенных стандартных команд. Любая пользовательская команда отрисовывается в нейтральных цветах ОС (обычно серым или системным акцентным цветом).
  2. Использование пиктограмм. Так как изменить цвет подложки штатно нельзя, основным инструментом визуального акцента выступает свойство Картинка у кнопки или команды. Добавим стандартную или собственную иконку (например, пиктограмму корзины), и мобильная платформа отобразит ее на кнопке свайпа, сделав действие интуитивно понятным.
  3. Свойство Отображение. Для компактного размещения на узких экранах мобильных устройств зададим свойству кнопки Отображение значение Картинка или Авто.

Альтернативные способы реализации

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

  1. Режим отображения в виде карточек. Если переключить список в мобильном клиенте в режим карточек, управляющие кнопки можно вынести непосредственно в шаблон строки. Внутри тела карточки настройки цветов и стилей оформления работают шире, чем в системной свайп-панели.
  2. Поле HTML-документа. Список выводится через элемент формы ПолеHTMLДокумента. Вся верстка, обработка touch-событий свайпа и стилизация кнопок реализуются с помощью CSS и JavaScript, а обратная связь с базой данных 1С настраивается через перехват событий документа.
← На главную