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