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