При разработке интерфейсов на управляемых формах 1С часто возникает задача: сделать одну из колонок таблицы кликабельной гиперссылкой. Типичный пример — список контрагентов или записей, где одна колонка открывает саму карточку (стандартное поведение), а вторая (например, с адресом сайта) должна сразу перенаправлять пользователя в браузер. В этой статье мы подробно разберем, как правильно настроить свойства элементов и какой код написать, чтобы достичь желаемого результата.
Представим ситуацию: у нас есть форма (например, форма списка справочника или форма с табличной частью), где выведены две колонки. Первая колонка — текстовая, при нажатии на которую должна открываться форма элемента. Вторая колонка содержит URL-адрес. Проблема заключается в том, что по умолчанию 1С интерпретирует нажатие на любую ячейку строки как команду к открытию основной формы объекта. Даже если мы просто установим флаг «Гиперссылка» в свойствах колонки, система все равно попытается выполнить стандартное действие — открыть форму элемента справочника или начать редактирование.
Для решения этой задачи нам потребуется выполнить два этапа: визуальную настройку колонки и программный перехват события нажатия.
Прежде чем приступать к коду, необходимо подготовить элемент формы, чтобы он вел себя и выглядел как ссылка. Проанализируем необходимые свойства в конфигураторе:
Гиперссылка, которое делает поле похожим на надпись-ссылку, ГиперссылкаЯчейки заставляет всю область ячейки реагировать на клик особым образом (меняется курсор при наведении).Цвет гиперссылки (обычно он синий).Истина. Это предотвратит вход в режим редактирования текста при клике, что часто мешает работе гиперссылки.Чтобы подавить стандартное открытие формы и выполнить свой код (переход по ссылке), нам нужно использовать события таблицы. Рассмотрим наиболее надежный способ — использование события Выбор у самой таблицы (не у отдельной колонки).
Разберем алгоритм работы обработчика:
Выбор для таблицы на клиенте.СтандартнаяОбработка = Ложь.Посмотрим на пример кода:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
// Проверяем, что пользователь нажал именно на колонку с адресом сайта
Если Поле.Имя = "ИмяКолонкиСАдресом" Тогда
// Отменяем стандартное открытие формы элемента 1С
СтандартнаяОбработка = Ложь;
// Получаем данные текущей строки таблицы
ДанныеСтроки = Элементы.Список.ДанныеСтроки(ВыбраннаяСтрока);
// Если в строке есть адрес, переходим по нему
Если ЗначениеЗаполнено(ДанныеСтроки.ИмяКолонкиСАдресом) Тогда
ПерейтиПоСсылке(ДанныеСтроки.ИмяКолонкиСАдресом);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Важный момент: использование СтандартнаяОбработка = Ложь обязано быть первой или одной из первых команд внутри условия. Если вы забудете это сделать, 1С сначала выполнит ваш код (откроет браузер), а затем сразу же откроет форму элемента справочника, что создаст лишний визуальный шум и неудобство для пользователя.
Если для поля ввода в колонке включено свойство Гиперссылка, у него активируется собственное событие «Нажатие». Рассмотрим ситуацию, когда удобнее использовать его. Этот метод позволяет не проверять имя колонки, так как обработчик привязан непосредственно к элементу управления.
&НаКлиенте
Процедура ИмяКолонкиСАдресомНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
// Получаем текущие данные через элемент таблицы
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ПерейтиПоСсылке(ТекущиеДанные.ИмяКолонкиСАдресом);
КонецЕсли;
КонецПроцедуры
Если ваша таблица — это Динамический список (например, форма списка справочника или документов), проанализируем дополнительные требования:
ВыбраннаяСтрока может указывать на группу или пустую область. Всегда проверяйте наличие данных в ДанныеСтроки(), чтобы избежать ошибок при попытке обращения к несуществующему адресу."mysite.com/client/" + Идентификатор). В таком случае расчет ссылки лучше вынести в текст запроса динамического списка.Бывают случаи, когда ссылка должна быть активной не для всех строк. Проанализируем, как это реализовать без написания сложной логики в событиях активации строки. Мы можем использовать Условное оформление формы:
Гиперссылка = Истина.АдресСайта Заполнено.Таким образом, ячейки, где адрес не заполнен, будут выглядеть как обычный текст и не будут реагировать на клик как ссылки, что значительно улучшает UX (пользовательский опыт).
Мы выяснили, что для реализации полноценной гиперссылки в таблице недостаточно просто включить флажок в свойствах. Основной секрет заключается в сочетании свойства ГиперссылкаЯчейки и перехвата события Выбор или Нажатие с обязательным сбросом СтандартнаяОбработка. Используя эти методы, вы сможете создавать гибкие и интуитивно понятные интерфейсы в своих конфигурациях на базе 1С:Предприятие 8.3.