К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как в 1С сделать гиперссылку в табличной части

Разбираем, как в 1С сделать гиперссылку в табличной части: событие Выбор, ПолеHTMLДокумента, навигационные ссылки и типовые ошибки с примерами кода.

Штатного типа «гиперссылка» для колонки табличной части в 1С не существует: ячейка таблицы умеет хранить значение примитивного типа, ссылку на объект или строку, но не интерактивную ссылку, по которой можно кликнуть. Однако кликабельное поведение реализуется другими средствами платформы — через обработчики событий таблицы формы, декорации-гиперссылки, поле HTML-документа или навигационные ссылки. Выбор зависит от того, что должно происходить по клику: открытие объекта, переход по внешнему URL или запуск произвольной команды.

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

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

Какие способы существуют и как выбрать подходящий

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

Основных подхода четыре. Обработчик события Выбор у таблицы формы — универсальный вариант для открытия объектов и запуска команд. Событие ПриНажатии поля HTML-документа — для случаев, когда таблица фактически формируется как HTML. Навигационные ссылки (ПолучитьНавигационнуюСсылку) — когда нужно дать пользователю копируемую ссылку на объект. Декорация-гиперссылка рядом с таблицей — когда кликабельных действий мало и они относятся к целой строке.

Сравнение способов

Событие Выбор таблицы формы

Подходит для открытия объектов и произвольных действий по клику на ячейку. Работает в управляемых и обычных формах. Требует программирования.

Поле HTML-документа

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

Навигационная ссылка

Дает копируемую ссылку на объект для передачи коллеге или вставки в письмо. Не заменяет кликабельную ячейку.

Декорация-гиперссылка

Подходит для одного-двух действий на уровне всей таблицы, а не каждой ячейки.

Открытие объекта по клику через событие «Выбор»

Самый частый сценарий: в табличной части есть колонка со ссылкой на справочник или документ, и по двойному клику (или по клику на конкретную колонку) нужно открыть карточку объекта. Для колонок ссылочного типа платформа часто делает это автоматически, но если колонка строковая или нужно нестандартное поведение, обработчик пишется вручную.

В модуле формы создайте обработчик события Выбор таблицы формы. Внутри проверьте, по какой колонке кликнул пользователь, получите значение текущей строки и откройте нужную форму:

&НаКлиенте

Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

Если Поле.Имя = "ТоварыНоменклатура" Тогда

СтандартнаяОбработка = Ложь;

ТекущиеДанные = Элементы.Товары.ТекущиеДанные;

Если ТекущиеДанные <> Неопределено

И ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда

ПоказатьЗначение(, ТекущиеДанные.Номенклатура);

КонецЕсли;

КонецЕсли;

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

Ключевые моменты: присвоение СтандартнаяОбработка = Ложь отключает типовое поведение (иначе откроется и стандартное действие, и ваше). Проверка Поле.Имя гарантирует, что реакция срабатывает только на нужной колонке, а не на любую ячейку строки. Метод ПоказатьЗначение безопасно открывает объект в режиме просмотра.

Порядок действий
  1. 1
    Откройте форму документа в конфигураторе, найдите таблицу формы табличной части
  2. 2
    В палитре свойств таблицы назначьте обработчик события «Выбор»
  3. 3
    В обработчике проверьте имя колонки через параметр Поле
  4. 4
    Установите СтандартнаяОбработка = Ложь и вызовите ПоказатьЗначение или ОткрытьЗначение
  5. 5
    Сохраните конфигурацию, обновите базу и проверьте клик в режиме предприятия

Переход по внешнему URL из ячейки

Если в табличной части хранится адрес веб-страницы (например, ссылка на карточку товара у поставщика или на трек-номер в службе доставки), по клику нужно открыть браузер. Для этого используется метод НачатьЗапускПриложения или более простой вариант — ПерейтиПоНавигационнойСсылке из общего модуля ФайловаяСистемаКлиент в конфигурациях на БСП.

Пример без привязки к БСП — открытие URL через запуск приложения:

&НаКлиенте

Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

Если Поле.Имя = "ТоварыСсылкаНаСайт" Тогда

СтандартнаяОбработка = Ложь;

Адрес = Элементы.Товары.ТекущиеДанные.СсылкаНаСайт;

Если Не ПустаяСтрока(Адрес) Тогда

НачатьЗапускПриложения(, Адрес);

Иначе

ПоказатьПредупреждение(, "В строке не заполнен адрес ссылки.");

КонецЕсли;

КонецЕсли;

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

Обратите внимание на проверку заполненности: пустая строка, переданная в НачатьЗапускПриложения, вызовет ошибку или откроет окно выбора программы в зависимости от операционной системы. Также полезно проверять, что адрес начинается с http:// или https://, иначе система может попытаться интерпретировать строку как локальный путь к файлу.

Как визуально оформить ячейку под гиперссылку

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

Откройте в конфигураторе форму, перейдите на закладку «Условное оформление» (или вызовите настройку у элемента таблицы) и добавьте элемент оформления: область — нужная колонка таблицы, оформление — цвет текста синий. Эффект подчеркивания в условном оформлении недоступен напрямую, поэтому часто ограничиваются синим цветом текста плюс всплывающей подсказкой у колонки «Дважды щелкните, чтобы открыть».

Альтернатива без конфигуратора — условное оформление программно в обработчике ПриСозданииНаСервере через свойство УсловноеОформление формы. Это удобно, когда форма генерируется динамически или нужно применять оформление по условию, например подсвечивать только заполненные ссылки.

Навигационные ссылки и поле HTML-документа

Навигационная ссылка на объект

Если задача — не клик в таблице, а возможность получить ссылку на объект и переслать её коллеге, используйте функцию ПолучитьНавигационнуюСсылку(СсылкаНаОбъект). Результат имеет вид e1cib/data/Справочник.Номенклатура?ref=... и открывается в тонком или веб-клиенте при наличии доступа к базе. Такую ссылку можно вывести в отдельной строковой колонке табличной части или показать по команде.

Учтите: навигационная ссылка работает только внутри вашей инфраструктуры 1С и не является веб-адресом для внешних пользователей. Для публикации наружу потребуется веб-сервис или HTTP-сервис, что уже относится к интеграционным задачам.

Таблица как HTML-документ

Когда требуется полноценная HTML-разметка с настоящими тегами <a href>, табличную часть заменяют или дополняют полем HTML-документа. В нем формируют HTML-таблицу программно, а клики по ссылкам перехватывают событием ПриНажатии, где доступен элемент, по которому кликнули, и его атрибут href.

Этот подход оправдан для печатных-подобных представлений, дашбордов и произвольной верстки. Минус — потеря штатных возможностей табличной части: сортировки, отборов, редактирования в ячейках. Поэтому HTML-поле применяют для просмотра, а не для ввода данных.

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

Типичные ошибки и ограничения

Первая частая ошибка — забыть СтандартнаяОбработка = Ложь. Тогда при клике на ссылочную колонку открывается и карточка объекта штатно, и выполняется ваш код, например открывается два окна или дополнительно запускается браузер. Вторая ошибка — не проверять имя поля: обработчик срабатывает на любую ячейку строки, и попытка отредактировать количество приводит к открытию карточки товара.

Третья ошибка — обращение к Элементы.Товары.ТекущиеДанные без проверки на Неопределено. Если таблица пуста или фокус не на строке, обращение вызовет ошибку исполнения. Четвертое — попытка использовать событие Выбор для реакции на одиночный клик: в управляемой форме оно срабатывает по двойному клику или Enter, и это нормальное поведение платформы, а не дефект.

Типичные ошибки
01
Не сброшен параметр СтандартнаяОбработка — открываются два окна вместо одного
02
Нет проверки Поле.Имя — обработчик срабатывает на любую колонку строки
03
Нет проверки ТекущиеДанные на Неопределено — ошибка при клике по пустой таблице
04
В НачатьЗапускПриложения передается адрес без http:// — система ищет локальный файл
05
Ожидание срабатывания по одиночному клику — событие Выбор реагирует на двойной клик или Enter

Ещё одно ограничение: в обычных формах (устаревший интерфейс) механика похожая, но имена событий и свойств отличаются, а условное оформление настраивается иначе. Если конфигурация работает в режиме совместимости с обычным приложением, проверяйте синтаксис под конкретную версию платформы в синтакс-помощнике.

Контрольные точки

Как проверить результат

Клик по ячейке со ссылкой
Норма

Открывается карточка объекта или браузер с нужной страницей, одно окно

Тревожный признак

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

Клик по другим колонкам строки
Норма

Работает стандартное редактирование значения

Тревожный признак

Срабатывает открытие объекта при редактировании других ячеек

Клик по пустой строке или пустой ссылке
Норма

Ничего не происходит или показано понятное предупреждение

Тревожный признак

Ошибка исполнения или окно выбора приложения

Внешний вид колонки
Норма

Текст визуально отличается (синий цвет), есть подсказка

Тревожный признак

Ячейка неотличима от обычных, пользователь не знает о кликабельности

Частые вопросы

Можно ли сделать гиперссылку в табличной части без программирования?

Полноценно — нет. Без кода работает только штатное открытие значения ссылочного типа по двойному клику. Любое нестандартное действие (внешний URL, своя форма, команда) требует обработчика события «Выбор» в модуле формы.

Почему обработчик «Выбор» не срабатывает на одиночный клик?

Это штатное поведение платформы: событие «Выбор» у таблицы формы вызывается по двойному щелчку или нажатию Enter. Реакцию на одиночный клик для ячеек таблицы платформа не предоставляет; ближайшая альтернатива — событие «ПриАктивизацииЯчейки», но запускать по нему открытие окон не рекомендуется, так как оно срабатывает и при обычной навигации стрелками.

Как открыть внешнюю ссылку, если в базе используется БСП?

В конфигурациях на Библиотеке стандартных подсистем вызовите ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(Адрес) — метод корректно работает в тонком, толстом и веб-клиенте и обрабатывает ошибки запуска браузера.

Можно ли сделать кликабельной картинку в табличной части?

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

Как дать пользователю ссылку на объект для отправки коллеге?

Используйте ПолучитьНавигационнуюСсылку(Ссылка) на сервере и поместите результат в буфер обмена или в строковую колонку. Коллега вставит ссылку через команду «Перейти по ссылке» в меню «Файл» тонкого клиента и откроет тот же объект при наличии прав.

Работает ли этот подход в динамических списках?

Да, у таблицы, отображающей динамический список, тоже есть событие «Выбор», и обработчик пишется аналогично. Отличие в том, что ТекущиеДанные содержат поля выборки запроса, поэтому ссылку на объект нужно включить в поля списка.

Итог

Что важно запомнить

Гиперссылка в табличной части 1С — это обработчик события «Выбор» таблицы формы с проверкой колонки и сбросом стандартной обработки. Объект открывают через ПоказатьЗначение, внешний URL — через НачатьЗапускПриложения с проверкой протокола, внешний вид ссылки имитируют условным оформлением. Всегда проверяйте ТекущиеДанные на Неопределено и тестируйте клики по соседним колонкам и пустым строкам.