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

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

Как сделать ссылку в табличном документе 1С

Как добавить гиперссылку в табличный документ 1С: программное формирование, расшифровка, обработка событий ПриНажатии и ОбработкаРасшифровки. Примеры кода и ошибки.

Табличный документ в 1С используется для печатных форм, отчётов и вывода произвольных данных. Часто возникает задача сделать в нём кликабельную ссылку — например, чтобы из отчёта открывалась карточка контрагента, документ-основание или внешняя страница в браузере. В зависимости от цели применяются разные механизмы: свойство «Гиперссылка» области, расшифровка ячейки или обработка события нажатия.

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

Ниже разобраны все рабочие способы: от простого оформления ячейки как гиперссылки до полноценной расшифровки с открытием объектов и внешних URL.

Какие виды «ссылок» бывают в табличном документе

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

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

Оформляем ячейку как гиперссылку

Чтобы ячейка выглядела и вела себя как ссылка, нужно установить два свойства области табличного документа. Свойство Гиперссылка переводится в значение Истина — ячейка подсвечивается при наведении и реагирует на клик. Свойство Расшифровка принимает значение, которое будет передано в обработчик.

Программно это выглядит так:

ОбластьЯчейка = ТабДок.Область("R" + НомерСтроки + "C2");

ОбластьЯчейка.Текст = СокрЛП(ДанныеСтроки.Контрагент);

ОбластьЯчейка.Гиперссылка = Истина;

ОбластьЯчейка.Расшифровка = ДанныеСтроки.КонтрагентСсылка;

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

Дополнительно ячейке часто задают синий цвет текста и подчёркивание, чтобы пользователь визуально распознал ссылку. Это делается через свойства ЦветТекста и Шрифт области.

Обрабатываем нажатие: событие ОбработкаРасшифровки

Оформленная ячейка сама ничего не открывает. Реакция на клик описывается в модуле формы, где размещено поле табличного документа. Основное событие — ОбработкаРасшифровки (в обычных формах) или ОбработкаРасшифровки / ОбработкаДополнительнойРасшифровки в управляемых формах.

Типовой обработчик для открытия объекта базы выглядит так:

&НаКлиенте

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

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

Если ТипЗнч(Расшифровка) = Тип("СправочникСсылка.Контрагенты") Тогда

ПоказатьЗначение(, Расшифровка);

КонецЕсли;

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

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

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

Порядок действий для ссылки на объект базы
  1. 1
    В макете или программно задайте ячейке Гиперссылка = Истина
  2. 2
    Запишите в Расшифровка ссылку на объект (документ, элемент справочника)
  3. 3
    В модуле формы создайте обработчик ОбработкаРасшифровки поля табличного документа
  4. 4
    Установите СтандартнаяОбработка = Ложь
  5. 5
    Вызовите ПоказатьЗначение(, Расшифровка) и проверьте открытие формы объекта

Открываем внешний URL из ячейки

Для ссылки на сайт или файл в расшифровку помещают строку с адресом, а в обработчике определяют, что это URL, и запускают браузер. Надёжный способ — использовать ПерейтиПоНавигационнойСсылке (глобальный контекст, доступен на клиенте) или ЗапуститьПриложение.

&НаКлиенте

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

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

Если ТипЗнч(Расшифровка) = Тип("Строка")

И СтрНачинаетсяС(Расшифровка, "http") Тогда

ПерейтиПоНавигационнойСсылке(Расшифровка);

КонецЕсли;

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

Для адресов электронной почты используйте префикс mailto:, для файлов — полный путь или file://. Учтите, что ЗапуститьПриложение в тонком и веб-клиенте может запрашивать подтверждение пользователя, а в веб-клиенте часть сценариев ограничена политиками браузера.

Расшифровка в отчётах на СКД

Если табличный документ формируется отчётом на системе компоновки данных, механизм расшифровки встроен в платформу. По двойному клику на ячейке пользователь получает стандартное меню: «Расшифровать», «Открыть», «Упорядочить» и другие действия. Разработчику не нужно писать код, чтобы из ячейки «Контрагент» открывалась карточка контрагента — это делает стандартная обработка расшифровки.

Когда стандартного поведения недостаточно, в модуле формы отчёта переопределяют событие ОбработкаРасшифровки или ОбработкаДополнительнойРасшифровки. Внутри обработчика доступен объект ДанныеРасшифровки, через который получают значения полей текущей строки и формируют собственную реакцию.

Для отчётов, выведенных программно без формы (например, в фоновом задании с последующей отправкой по почте), расшифровка СКД не работает — вне контекста интерактивной формы кликабельность недоступна.

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

Свойство Гиперссылка + свой обработчик

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

Стандартная расшифровка СКД

Работает из коробки в отчётах на СКД, без кода. Ограничена стандартным набором действий и контекстом отчёта.

Параметр расшифровки в макете

Удобно для типовых печатных форм: оформление хранится в макете, код минимален. Менее гибко при сложной логике.

Проверка результата и типичные ошибки

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

Частая проблема — клик по ячейке ничего не делает. Причины: не установлено свойство Гиперссылка, обработчик события не привязан к полю табличного документа в палитре событий формы, либо в обработчике не сброшена СтандартнаяОбработка и платформа «съедает» клик.

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

Типичные ошибки
01
В Расшифровка записана строка-наименование вместо ссылки — объект не открывается, ПоказатьЗначение игнорирует значение
02
Обработчик события создан в модуле, но не назначен полю табличного документа в свойствах формы — клик не вызывает код
03
Не установлено СтандартнаяОбработка = Ложь — платформа выполняет действие по умолчанию и выдаёт ошибку
04
Проверка только в толстом клиенте — в веб-клиенте запуск внешних ссылок блокируется браузером
05
Ячейке задана гиперссылка, но документ выводится на печать или в PDF — ссылка становится обычным текстом
Контрольные точки

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

Наведение курсора на ячейку
Норма

Указатель меняется, ячейка подсвечивается как ссылка

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

Ячейка выглядит как обычный текст — свойство Гиперссылка не установлено

Клик по ячейке с объектом
Норма

Открывается форма нужного документа или справочника

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

Ничего не происходит или ошибка — проверьте привязку обработчика и тип расшифровки

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

Открывается браузер с нужной страницей

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

Сообщение о запрете — ограничения клиента или неверный формат адреса

Ограничения и безопасные границы

Табличный документ — это формат представления, а не интерактивная страница. Ссылки в нём работают только внутри клиентского приложения 1С в поле табличного документа. При сохранении в Excel, PDF или HTML кликабельность либо теряется полностью, либо зависит от того, как целевой формат интерпретирует оформление, — рассчитывать на неё нельзя.

Если документ формируется на сервере и передаётся клиенту, расшифровка сохраняется вместе с документом, поэтому ссылки продолжают работать. Но помните: значения расшифровки сериализуются, и слишком большие объёмы данных в расшифровке увеличивают размер документа и замедляют передачу.

Изменения типовых печатных форм и отчётов вносите через расширения конфигурации или внешние печатные формы, а не прямой правкой конфигурации поставщика — иначе при обновлении доработки будут потеряны.

Итог

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

Ссылка в табличном документе 1С — это ячейка со свойством Гиперссылка = Истина и значением в свойстве Расшифровка. Реакция на клик всегда программируется в обработчике ОбработкаРасшифровки поля табличного документа: объекты базы открывают через ПоказатьЗначение, внешние адреса — через ПерейтиПоНавигационнойСсылке. В отчётах на СКД базовая расшифровка работает без кода.

Часто задаваемые вопросы

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

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

Почему при двойном клике открывается редактирование ячейки, а не ссылка?

Поле табличного документа находится в режиме редактирования. Установите для элемента формы свойство «Редактирование» в «Ложь» (режим просмотра) — тогда клики будут вызывать обработку расшифровки, а не вход в ячейку.

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

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

Работают ли ссылки в табличном документе, отправленном по почте?

Нет. При сохранении табличного документа в файл (MXL, Excel, PDF, HTML) интерактивность теряется: получатель видит только текст и оформление. Кликабельные ссылки существуют только внутри клиентского приложения 1С.

Чем отличается событие ПриНажатии от ОбработкаРасшифровки?

ПриНажатии срабатывает при клике на ячейку с гиперссылкой и не связано с механизмом расшифровки СКД — оно удобно для произвольных табличных документов. ОбработкаРасшифровки используется в отчётах и передаёт дополнительные данные компоновки. Для простых печатных форм чаще достаточно одного из них, выбирайте по контексту формы.

Можно ли стилизовать ссылку — цвет, подчёркивание?

Да. Для области табличного документа доступны свойства ЦветТекста, Шрифт (в том числе с подчёркиванием) и ЦветФона. Задавайте их программно или в макете, чтобы ссылка визуально отличалась от обычного текста.