Разработка и Конфигурация · 11 мин
Как сделать ссылку в табличном документе 1С
Как добавить гиперссылку в табличный документ 1С: программное формирование, расшифровка, обработка событий ПриНажатии и ОбработкаРасшифровки. Примеры кода и ошибки.
Табличный документ в 1С используется для печатных форм, отчётов и вывода произвольных данных. Часто возникает задача сделать в нём кликабельную ссылку — например, чтобы из отчёта открывалась карточка контрагента, документ-основание или внешняя страница в браузере. В зависимости от цели применяются разные механизмы: свойство «Гиперссылка» области, расшифровка ячейки или обработка события нажатия.
Важно понимать: табличный документ сам по себе не «открывает» объекты базы. Он лишь хранит в ячейке значение расшифровки, а реакцию на клик программирует разработчик в модуле формы. Поэтому «ссылка» в 1С — это всегда связка из оформления ячейки и обработчика события.
Ниже разобраны все рабочие способы: от простого оформления ячейки как гиперссылки до полноценной расшифровки с открытием объектов и внешних URL.
Какие виды «ссылок» бывают в табличном документе
Под ссылкой в табличном документе обычно понимают три разных сценария, и их не стоит путать. Первый — переход к объекту информационной базы: документу, элементу справочника, записи регистра. Второй — открытие внешнего ресурса: сайта, файла, почтового адреса. Третий — выполнение произвольного действия при клике: открытие формы с параметрами, запуск отчёта, вызов процедуры.
Для всех трёх сценариев используется один и тот же механизм: ячейка оформляется как гиперссылка, в неё помещается значение расшифровки, а логика реакции описывается в обработчике события поля табличного документа. Различается только содержимое расшифровки и код обработчика.
Оформляем ячейку как гиперссылку
Чтобы ячейка выглядела и вела себя как ссылка, нужно установить два свойства области табличного документа. Свойство Гиперссылка переводится в значение Истина — ячейка подсвечивается при наведении и реагирует на клик. Свойство Расшифровка принимает значение, которое будет передано в обработчик.
Программно это выглядит так:
ОбластьЯчейка = ТабДок.Область("R" + НомерСтроки + "C2");
ОбластьЯчейка.Текст = СокрЛП(ДанныеСтроки.Контрагент);
ОбластьЯчейка.Гиперссылка = Истина;
ОбластьЯчейка.Расшифровка = ДанныеСтроки.КонтрагентСсылка;
Если табличный документ строится по макету, свойства можно задать заранее в конфигураторе: выделите ячейку макета, откройте палитру свойств и установите «Гиперссылка» — «Да», а расшифровку заполните параметром. Тогда при выводе области через ТабДок.Вывести() оформление подтянется автоматически, а расшифровку можно переопределить программно.
Дополнительно ячейке часто задают синий цвет текста и подчёркивание, чтобы пользователь визуально распознал ссылку. Это делается через свойства ЦветТекста и Шрифт области.
Обрабатываем нажатие: событие ОбработкаРасшифровки
Оформленная ячейка сама ничего не открывает. Реакция на клик описывается в модуле формы, где размещено поле табличного документа. Основное событие — ОбработкаРасшифровки (в обычных формах) или ОбработкаРасшифровки / ОбработкаДополнительнойРасшифровки в управляемых формах.
Типовой обработчик для открытия объекта базы выглядит так:
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(Расшифровка) = Тип("СправочникСсылка.Контрагенты") Тогда
ПоказатьЗначение(, Расшифровка);
КонецЕсли;
КонецПроцедуры
Обязательно установите СтандартнаяОбработка = Ложь, иначе платформа попытается выполнить действие по умолчанию, которое может привести к ошибке или нежелательному поведению. Метод ПоказатьЗначение() универсален: он открывает форму любого объекта ссылочного типа.
Проверка типа расшифровки нужна, потому что в одном документе могут быть ссылки разных видов — на контрагентов, документы и внешние адреса. Разветвляйте логику по типу значения или по префиксу строки.
- 1В макете или программно задайте ячейке Гиперссылка = Истина
- 2Запишите в Расшифровка ссылку на объект (документ, элемент справочника)
- 3В модуле формы создайте обработчик ОбработкаРасшифровки поля табличного документа
- 4Установите СтандартнаяОбработка = Ложь
- 5Вызовите ПоказатьЗначение(, Расшифровка) и проверьте открытие формы объекта
Открываем внешний URL из ячейки
Для ссылки на сайт или файл в расшифровку помещают строку с адресом, а в обработчике определяют, что это URL, и запускают браузер. Надёжный способ — использовать ПерейтиПоНавигационнойСсылке (глобальный контекст, доступен на клиенте) или ЗапуститьПриложение.
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(Расшифровка) = Тип("Строка")
И СтрНачинаетсяС(Расшифровка, "http") Тогда
ПерейтиПоНавигационнойСсылке(Расшифровка);
КонецЕсли;
КонецПроцедуры
Для адресов электронной почты используйте префикс mailto:, для файлов — полный путь или file://. Учтите, что ЗапуститьПриложение в тонком и веб-клиенте может запрашивать подтверждение пользователя, а в веб-клиенте часть сценариев ограничена политиками браузера.
Расшифровка в отчётах на СКД
Если табличный документ формируется отчётом на системе компоновки данных, механизм расшифровки встроен в платформу. По двойному клику на ячейке пользователь получает стандартное меню: «Расшифровать», «Открыть», «Упорядочить» и другие действия. Разработчику не нужно писать код, чтобы из ячейки «Контрагент» открывалась карточка контрагента — это делает стандартная обработка расшифровки.
Когда стандартного поведения недостаточно, в модуле формы отчёта переопределяют событие ОбработкаРасшифровки или ОбработкаДополнительнойРасшифровки. Внутри обработчика доступен объект ДанныеРасшифровки, через который получают значения полей текущей строки и формируют собственную реакцию.
Для отчётов, выведенных программно без формы (например, в фоновом задании с последующей отправкой по почте), расшифровка СКД не работает — вне контекста интерактивной формы кликабельность недоступна.
Сравнение способов
Полный контроль над действием, подходит для произвольных табличных документов. Требует написания кода в модуле формы.
Работает из коробки в отчётах на СКД, без кода. Ограничена стандартным набором действий и контекстом отчёта.
Удобно для типовых печатных форм: оформление хранится в макете, код минимален. Менее гибко при сложной логике.
Проверка результата и типичные ошибки
После реализации проверьте ссылку в режиме предприятия: наведите курсор на ячейку (должен измениться вид указателя), кликните и убедитесь, что открывается нужный объект. Проверяйте в том клиенте, в котором работают пользователи, — поведение тонкого, толстого и веб-клиента отличается, особенно для внешних URL.
Частая проблема — клик по ячейке ничего не делает. Причины: не установлено свойство Гиперссылка, обработчик события не привязан к полю табличного документа в палитре событий формы, либо в обработчике не сброшена СтандартнаяОбработка и платформа «съедает» клик.
Вторая типичная ошибка — в расшифровку кладут представление объекта (строку с наименованием) вместо самой ссылки. Тогда ПоказатьЗначение не сможет открыть объект, потому что строка — не ссылка. Всегда сохраняйте в расшифровку именно ссылочное значение.
Как проверить результат
Указатель меняется, ячейка подсвечивается как ссылка
Ячейка выглядит как обычный текст — свойство Гиперссылка не установлено
Открывается форма нужного документа или справочника
Ничего не происходит или ошибка — проверьте привязку обработчика и тип расшифровки
Открывается браузер с нужной страницей
Сообщение о запрете — ограничения клиента или неверный формат адреса
Ограничения и безопасные границы
Табличный документ — это формат представления, а не интерактивная страница. Ссылки в нём работают только внутри клиентского приложения 1С в поле табличного документа. При сохранении в Excel, PDF или HTML кликабельность либо теряется полностью, либо зависит от того, как целевой формат интерпретирует оформление, — рассчитывать на неё нельзя.
Если документ формируется на сервере и передаётся клиенту, расшифровка сохраняется вместе с документом, поэтому ссылки продолжают работать. Но помните: значения расшифровки сериализуются, и слишком большие объёмы данных в расшифровке увеличивают размер документа и замедляют передачу.
Изменения типовых печатных форм и отчётов вносите через расширения конфигурации или внешние печатные формы, а не прямой правкой конфигурации поставщика — иначе при обновлении доработки будут потеряны.
Что важно запомнить
Ссылка в табличном документе 1С — это ячейка со свойством Гиперссылка = Истина и значением в свойстве Расшифровка. Реакция на клик всегда программируется в обработчике ОбработкаРасшифровки поля табличного документа: объекты базы открывают через ПоказатьЗначение, внешние адреса — через ПерейтиПоНавигационнойСсылке. В отчётах на СКД базовая расшифровка работает без кода.
Часто задаваемые вопросы
Можно ли сделать ссылку в табличном документе без программирования?
Частично. В макете табличного документа можно заранее установить ячейке свойство «Гиперссылка» и указать параметр расшифровки. Но реакция на клик всё равно требует обработчика события в модуле формы. Полностью без кода работает только стандартная расшифровка в отчётах на СКД.
Почему при двойном клике открывается редактирование ячейки, а не ссылка?
Поле табличного документа находится в режиме редактирования. Установите для элемента формы свойство «Редактирование» в «Ложь» (режим просмотра) — тогда клики будут вызывать обработку расшифровки, а не вход в ячейку.
Как открыть из ячейки сразу несколько объектов или показать меню?
В обработчике ОбработкаРасшифровки сформируйте список значений с нужными действиями и покажите его через ПоказатьВыборИзМеню. В расшифровку при этом удобно помещать структуру с несколькими значениями, а не одиночную ссылку.
Работают ли ссылки в табличном документе, отправленном по почте?
Нет. При сохранении табличного документа в файл (MXL, Excel, PDF, HTML) интерактивность теряется: получатель видит только текст и оформление. Кликабельные ссылки существуют только внутри клиентского приложения 1С.
Чем отличается событие ПриНажатии от ОбработкаРасшифровки?
ПриНажатии срабатывает при клике на ячейку с гиперссылкой и не связано с механизмом расшифровки СКД — оно удобно для произвольных табличных документов. ОбработкаРасшифровки используется в отчётах и передаёт дополнительные данные компоновки. Для простых печатных форм чаще достаточно одного из них, выбирайте по контексту формы.
Можно ли стилизовать ссылку — цвет, подчёркивание?
Да. Для области табличного документа доступны свойства ЦветТекста, Шрифт (в том числе с подчёркиванием) и ЦветФона. Задавайте их программно или в макете, чтобы ссылка визуально отличалась от обычного текста.