Почему не срабатывают события Нажатие и ОбработкаНавигационнойСсылки в 1С и как это исправить

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

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

Разбор проблемы: Поле надписи и его ограничения

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

Чтобы сделать его кликабельным, необходимо выполнить следующие действия:

  1. В свойствах элемента формы установите флаг Гиперссылка.
  2. В обработчике события Нажатие обязательно пропишите СтандартнаяОбработка = Ложь;, если вы хотите перехватить действие и выполнить свой программный код вместо стандартного перехода по ссылке.

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

Использование декораций вместо полей надписи

Если нам нужно, чтобы нажатие отрабатывало по всей области элемента, а не только по буквам текста, проанализируем альтернативный вариант — использование элемента Декорация (вид — Надпись). Разберем преимущества этого подхода:

Реализация ввода на тачскринах: вызов экранной клавиатуры

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

Выясним, какие инструменты помогут решить эту задачу:

  1. Кнопка выбора: Установите свойство КнопкаВыбора в значение "Да". Используйте событие НачалоВыбора. Это самый стабильный способ вызвать свою форму (клавиатуру) при клике на элемент (например, через универсальную форму выбора типа).
  2. Режим выбора из списка: Если включить это свойство, поле становится чувствительным к клику в любой его области, так как система ожидает открытия списка. Это событие также можно перехватить.
  3. Прозрачные элементы: В некоторых случаях можно использовать группы или кнопки с прозрачным фоном, наложенные поверх элементов, хотя в управляемых формах это технически сложно реализуемо из-за особенностей компоновки.

Особенности работы с Форматированной строкой

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


ТекстСсылки = Новый ФорматированнаяСтрока("Нажмите здесь для перехода", , , , "e1cib/app/Справочник.Контрагенты");
Элементы.ПолеНадписи.Заголовок = ТекстСсылки;

В обработчике ОбработкаНавигационнойСсылки вы сможете проанализировать адрес ссылки и выполнить нужные действия, установив СтандартнаяОбработка = Ложь.

Одиночный клик в таблицах и деревьях значений

Разберем ситуацию с Деревом значений или Таблицей. Часто требуется открыть объект при одиночном клике на ячейку. Использование события ПриАктивизацииСтроки неудобно, так как оно срабатывает при любом программном обновлении данных, даже если пользователь ничего не нажимал.

Как решить эту проблему правильно:

Итоги и рекомендации

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

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

← На главную