Как реализовать гиперссылку в колонке табличного поля 1С, чтобы открывался сайт, а не форма?

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

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

Постановка задачи и анализ проблемы

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

Для решения этой задачи нам потребуется выполнить два этапа: визуальную настройку колонки и программный перехват события нажатия.

Этап 1. Настройка визуальных свойств колонки

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

  1. Найдите нужную колонку в дереве элементов формы.
  2. Установите свойство «ГиперссылкаЯчейки». Это ключевое свойство для таблиц. В отличие от простого свойства Гиперссылка, которое делает поле похожим на надпись-ссылку, ГиперссылкаЯчейки заставляет всю область ячейки реагировать на клик особым образом (меняется курсор при наведении).
  3. Для визуальной наглядности рекомендуется изменить «ЦветТекста». Выберите системный цвет Цвет гиперссылки (обычно он синий).
  4. Установите свойство «ТолькоПросмотр» для этой колонки в значение Истина. Это предотвратит вход в режим редактирования текста при клике, что часто мешает работе гиперссылки.

Этап 2. Программная обработка события «Выбор»

Чтобы подавить стандартное открытие формы и выполнить свой код (переход по ссылке), нам нужно использовать события таблицы. Рассмотрим наиболее надежный способ — использование события Выбор у самой таблицы (не у отдельной колонки).

Разберем алгоритм работы обработчика:

  1. Создадим обработчик события Выбор для таблицы на клиенте.
  2. Проверим, по какой именно колонке нажал пользователь.
  3. Если нажата колонка с URL, установим параметр СтандартнаяОбработка = Ложь.
  4. Выполним переход по внешней ссылке.

Посмотрим на пример кода:


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

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

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

Альтернативный вариант: Событие «Нажатие»

Если для поля ввода в колонке включено свойство Гиперссылка, у него активируется собственное событие «Нажатие». Рассмотрим ситуацию, когда удобнее использовать его. Этот метод позволяет не проверять имя колонки, так как обработчик привязан непосредственно к элементу управления.


&НаКлиенте
Процедура ИмяКолонкиСАдресомНажатие(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    // Получаем текущие данные через элемент таблицы
    ТекущиеДанные = Элементы.Список.ТекущиеДанные;
    
    Если ТекущиеДанные <> Неопределено Тогда
        ПерейтиПоСсылке(ТекущиеДанные.ИмяКолонкиСАдресом);
    КонецЕсли;
    
КонецПроцедуры

Нюансы при работе с Динамическими списками

Если ваша таблица — это Динамический список (например, форма списка справочника или документов), проанализируем дополнительные требования:

Использование Условного оформления

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

  1. В настройках условного оформления добавьте новое правило.
  2. В оформляемых полях выберите вашу колонку.
  3. В свойствах оформления укажите Гиперссылка = Истина.
  4. В условии укажите, например, АдресСайта Заполнено.

Таким образом, ячейки, где адрес не заполнен, будут выглядеть как обычный текст и не будут реагировать на клик как ссылки, что значительно улучшает UX (пользовательский опыт).

Заключение

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

← На главную