Какое событие активируется при нажатии на гиперссылку в поле ввода или колонке таблицы на обычных формах?

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

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

Обработка клика по гиперссылке в колонке табличного поля

Рассмотрим наиболее распространенную ситуацию: у нас есть элемент управления ТабличноеПоле, и в одной из его колонок мы установили свойство Гиперссылка в значение Истина. Визуально текст в ячейках становится подчеркнутым, а курсор при наведении меняется на «руку». Но какой обработчик использовать в коде?

Выясним причину недоразумения: многие ищут событие непосредственно в свойствах колонки, однако нужное нам событие принадлежит всему объекту ТабличноеПоле. Основным событием для обработки клика по гиперссылке является Выбор.

Разберем по шагам, как это работает:

  1. Убедимся, что для нужной колонки табличного поля в палитре свойств установлена галочка Гиперссылка.
  2. Перейдем к событиям самого табличного поля (не колонки!) и создадим обработчик Выбор.
  3. Внутри обработчика проанализируем, в какой именно колонке произошло действие.

Проанализируем пример кода для обработки этого события:


Процедура ТабличнаяЧасть1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    
    // Проверяем, что нажата именно та колонка, которая является гиперссылкой
    Если Колонка.Имя = "Номенклатура" Тогда
        
        // Отменяем стандартное открытие формы объекта, если хотим реализовать свою логику
        СтандартнаяОбработка = Ложь;
        
        // Выполняем произвольное действие
        ЗначениеЯчейки = ВыбраннаяСтрока[Колонка.Имя];
        Сообщить("Вы нажали на ссылку: " + Строка(ЗначениеЯчейки));
        
        // Например, откроем специальную форму отчета
        // ОткрытьФорму("Отчет.ДвиженияНоменклатуры.Форма", Новый Структура("Номенклатура", ЗначениеЯчейки));
        
    КонецЕсли;

КонецПроцедуры

Особенности работы события «Выбор»

Рассмотрим подробнее, почему система ведет себя именно так. Событие Выбор в табличном поле является универсальным триггером для «активации» значения. Когда свойство Гиперссылка выключено, это событие обычно вызывается двойным кликом мыши или нажатием клавиши Enter. Однако включение свойства Гиперссылка меняет поведение системы: теперь одиночный клик левой кнопкой мыши интерпретируется платформой как полноценное действие выбора.

Важно учитывать взаимодействие с режимом Только просмотр. Одной из ключевых особенностей является то, что гиперссылка в таблице остается активной, даже если для таблицы или колонки установлено свойство ТолькоПросмотр (ReadOnly). Это позволяет создавать информационные панели (дашборды) или реестры документов, где редактирование запрещено, но навигация по объектам через гиперссылки сохраняется.

Параметр СтандартнаяОбработка

Проанализируем критически важный параметр СтандартнаяОбработка. Если в ячейке находится ссылка на справочник или документ, то после выполнения вашего кода в обработчике Выбор платформа по умолчанию попытается открыть основную форму этого объекта. Если ваша задача — заменить стандартное открытие своим действием (например, вывести сообщение или открыть другую форму), обязательно установите СтандартнаяОбработка = Ложь;.

Имитация гиперссылки в одиночном поле ввода

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

Посмотрим на альтернативные способы реализации этой задачи:

  1. Использование Поля надписи (Label): Это самый простой и правильный путь. У элемента ПолеНадписи есть свойство Гиперссылка и событие Нажатие. Если вам нужно, чтобы текст выглядел как ссылка и нажимался, используйте именно надпись.
  2. Использование кнопок в Поле ввода: Если поле должно оставаться редактируемым, но при этом иметь функционал «перехода», мы используем кнопки выбора или кнопки открытия.

Пример программной настройки кнопок в ПолеВвода:


// В процедуре ПриОткрытии или в свойствах формы
ЭлементыФормы.ПолеВводаКонтрагент.КнопкаОткрытия = Истина;

После этого мы обрабатываем событие Открытие для этого поля:


Процедура ПолеВводаКонтрагентОткрытие(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    // Ваша логика перехода
    ПоказатьЗначение(, Элемент.Значение);
КонецПроцедуры

Визуальное оформление и юзабилити

Выясним, как добиться максимального сходства с веб-интерфейсом. Хотя свойство Гиперссылка меняет вид курсора и подчеркивает текст, цвет текста может остаться черным. Чтобы пользователь однозначно идентифицировал элемент как ссылку, рекомендуется в свойствах колонки или поля надписи установить Цвет текста. В системной палитре 1С для этого предусмотрен специальный цвет: Цвет текста гиперссылки (обычно он синий).

Также важно различать событие Выбор и событие ПриАктивизацииЯчейки. Никогда не используйте ПриАктивизацииЯчейки для реализации логики переходов. Это событие срабатывает каждый раз, когда пользователь просто перемещается по таблице с помощью стрелок на клавиатуре. Использование этого события для открытия форм приведет к тому, что интерфейс станет неработоспособным, так как формы будут «выскакивать» при каждом движении курсора.

Типы данных и ограничения

Посмотрим на то, как типы данных влияют на поведение ссылок. Свойство Гиперссылка лучше всего работает со строковыми типами, числами и ссылочными типами (СправочникСсылка, ДокументСсылка). Если вы используете составной тип данных, убедитесь, что в момент клика в ячейке находится конкретное значение. Если ячейка пуста, событие Выбор может не сработать, так как системе «не за что зацепиться» при клике.

Подводя итог, можно сказать, что механизм гиперссылок в обычных формах реализован лаконично: в таблицах мы опираемся на свойство Гиперссылка колонки и событие Выбор таблицы, а для одиночных элементов используем ПолеНадписи с обработчиком Нажатие. Это обеспечивает привычный для пользователей «веб-стиль» работы с данными при сохранении высокой производительности интерфейса 1С.

← На главную