Гиперссылки в 1С: от кликабельной надписи до навигационных ссылок в коде

· 9 мин

Содержание

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

Разберём все рабочие варианты на платформе 8.3 с интерфейсом «Такси»: и те, что делаются мышкой, и те, что требуют кода. Для каждого — где лежит нужное свойство, что писать в обработчике и на что ссылается результат.

Что в 1С понимают под ссылкой

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

  • 🔗 Навигационная ссылка — строка вида e1cib/data/Справочник.Контрагенты?ref=.... Это внутренний адрес объекта или списка в самой базе. По клику открывается нужная форма 1С.
  • 🌐 Внешняя ссылка (URL) — обычный адрес сайта https://.... По клику открывается браузер (в веб-клиенте — новая вкладка).
  • 📝 Кликабельный элемент на форме — надпись или фрагмент текста, который при нажатии что-то делает: открывает объект, сайт или выполняет код в обработчике.

Дальше — какой из них и как получить. Если вы не уверены, что именно вам нужно, начните с подсказки.

Где должна быть ссылка?

Кликабельная надпись на управляемой форме

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

  1. Откройте форму в конфигураторе, перейдите на закладку Форма.
  2. В дереве элементов добавьте декорацию: правой кнопкой по корню → Добавить → Декорация-Надпись.
  3. В палитре свойств надписи задайте Заголовок (видимый текст) и установите флаг Гиперссылка.

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

Чтобы по клику что-то происходило, добавьте обработчик события Нажатие:

&НаКлиенте
Процедура НадписьСайтНажатие(Элемент)
    ПерейтиПоНавигационнойСсылке("https://nalog.gov.ru");
КонецПроцедуры

Если надо открыть не сайт, а объект базы — передавайте в ПерейтиПоНавигационнойСсылке навигационную ссылку (как её получить — в разделе про код).

Если текст надписи заранее неизвестен (например, адрес из реквизита), заполняйте Заголовок надписи программно в обработчике ПриСозданииНаСервере: Элементы.НадписьСайт.Заголовок = Объект.СайтКонтрагента;

Надпись-гиперссылку часто ставят под шапкой документа: ссылка на связанный заказ, на договор, на внешний сервис отслеживания. Текст лучше делать говорящим — не «ссылка», а «Открыть договор № 15». Длинный URL целиком в заголовок выводить не стоит: он занимает место и ломает вёрстку формы на узких экранах.

Вставка ссылки в текстовое поле без программирования

Когда ссылку вставляет не разработчик, а пользователь — прямо в поле комментария, заметки или описания, — это поле должно быть типа Форматированный документ (не обычная строка).

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

Порядок действий для пользователя:

  1. Выделите в поле текст, который станет ссылкой.
  2. На панели форматирования поля нажмите кнопку вставки гиперссылки (значок звена цепи).
  3. В открывшемся окне впишите адрес и, при желании, подсказку.

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

В обычном текстовом реквизите (тип Строка) кнопки вставки ссылки нет и быть не может. Если она нужна пользователю — реквизит и поле на форме меняют на тип «Форматированный документ». Это задача разработчика, а не настройка на лету.

Содержимое форматированного документа хранится вместе с оформлением — цветом, шрифтом, ссылками. Разработчику это удобно: такой реквизит можно выгрузить как HTML и, наоборот, загрузить готовую разметку. Для этого у объекта ФорматированныйДокумент есть методы получения и установки HTML — точные сигнатуры смотрите в синтакс-помощнике конфигуратора. Так, например, в заметку или описание задачи попадают заранее подготовленные блоки текста со ссылками.

Навигационные ссылки из встроенного языка

Когда ссылку нужно получить или открыть кодом, работают две глобальные функции платформы.

Получить ссылку на объект:

НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(СсылкаНаКонтрагента);
// вернётся строка вида e1cib/data/Справочник.Контрагенты?ref=...

Функция принимает ссылку на объект (элемент справочника, документ) и возвращает строку-адрес. Эту строку можно сохранить, передать в сообщение, положить в письмо — она останется рабочей, пока объект существует.

Открыть по ссылке:

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

Процедура открывает форму объекта, список или внешний сайт — смотря что передали. Это основной способ «сходить по ссылке» из кода.

Типовой сценарий — показать пользователю кликабельную ссылку в сообщении. Для этого используют форматированную строку с навигационной ссылкой:

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Проверьте карточку контрагента";
Сообщение.Поле = "Контрагент";
Сообщение.Сообщить();

Для кликабельной ссылки прямо в тексте сообщения удобнее собрать ФорматированнаяСтрока и вывести её в надпись на форме, задав Заголовок надписи этой строкой.

💡 Проверить, какой адрес вернула функция, легко: временно выведите результат ПолучитьНавигационнуюСсылку в Сообщить(...) и скопируйте строку.

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

Параметры = Новый Структура("Отбор", Новый Структура("Контрагент", ВыбранныйКонтрагент));
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаСписка", Параметры);

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

Ссылки на справочники, списки и команды: формат e1cib

Навигационные ссылки внутри 1С устроены по единой схеме e1cib/<тип>/<объект>. Зная формат, адрес можно собрать и вручную — например, чтобы открыть список с нужным объектом.

Что открываемФормат ссылки
Конкретный объектe1cib/data/Справочник.Номенклатура?ref=...
Список (форма списка)e1cib/list/Документ.РеализацияТоваровУслуг
Команда интерфейсаe1cib/command/...

Самый надёжный способ получить правильную ссылку на объект — не собирать её вручную, а взять у платформы через ПолучитьНавигационнуюСсылку. Формат e1cib/list удобен, когда нужен переход на список целиком, без конкретной строки.

А чтобы просто скопировать ссылку на открытый объект мышкой, без всякого кода:

  1. Откройте карточку нужного объекта.
  2. Нажмите кнопку «Сервис и настройки» (шестерёнка в правом верхнем углу).
  3. Выберите «Получить ссылку».

Платформа положит навигационную ссылку в буфер обмена — её можно вставить в чат, письмо или задачу. Коллега кликнет и попадёт точно на этот объект (если у него есть права и доступ к базе).

Ссылки в печатных формах и отчётах

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

Схема такая:

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

Если в расшифровку положить ссылку на сам объект (не строку, а СсылкаНаОбъект), платформа во многих случаях откроет его форму стандартной обработкой — тогда свой код не нужен, достаточно заполнить Область.Расшифровка = ЭлементНоменклатуры.

В отчётах на СКД механизм тот же: расшифровка формируется автоматически по полям группировок, и двойной клик по ячейке открывает связанный объект. Чтобы вести на внешний адрес, расшифровку задают вычисляемым полем и обрабатывают в форме отчёта.

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

Хотите, чтобы ячейка выглядела как ссылка (синий подчёркнутый текст)? Задайте оформление области: цвет текста и подчёркивание в свойствах области макета. На кликабельность это не влияет — за неё отвечает только расшифровка.

Внешние сайты и динамические ссылки

Открыть внешний адрес из кода — та же процедура, что и для внутренних ссылок:

ПерейтиПоНавигационнойСсылке("https://www.nalog.gov.ru");

В веб-клиенте сайт откроется в новой вкладке, в тонком клиенте — в браузере по умолчанию. ⚠️ В веб-клиенте всплывающие окна могут блокироваться браузером — если ничего не открылось, проверьте настройки блокировки всплывающих окон.

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

Адрес = "https://www.pochta.ru/tracking#" + Объект.ТрекНомер;
ПерейтиПоНавигационнойСсылке(Адрес);

Если в данные могут попасть пробелы, кириллица или спецсимволы, их нужно закодировать для URL. В платформе для этого есть функция КодироватьСтроку со способом кодирования URL — она превращает текст в безопасную для адреса форму. Без кодирования сервис либо не поймёт параметр, либо вернёт ошибку.

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

При сборке адреса из пользовательских данных экранируйте спецсимволы и проверяйте, что получился корректный URL. Склейка «как есть» через + ломается, если в данных есть пробелы или кириллица.

Частые ошибки при создании ссылок

🔸 Надпись выделена как гиперссылка, но по клику ничего не происходит. Флаг Гиперссылка отвечает только за внешний вид и кликабельность. Действие задаёт обработчик события Нажатие — его нужно добавить отдельно.

🔸 ПерейтиПоНавигационнойСсылке не срабатывает. Проверьте, что ссылка актуальна: навигационная ссылка на удалённый объект ведёт в никуда. И что процедура вызвана в клиентском контексте (&НаКлиенте) — на сервере перехода не будет.

🔸 В печатной форме клик по ячейке не открывает объект. Не заполнено свойство Расшифровка у выводимой области либо расшифровка перезаписывается пустым значением при следующем Вывести. Заполняйте расшифровку для каждой области отдельно.

🔸 Пытаются вставить ссылку в обычное текстовое поле. В реквизите типа Строка вставка гиперссылки невозможна. Нужен тип «Форматированный документ».

🔸 Ссылка на объект открывается у автора, но не у коллеги. Навигационная ссылка работает только внутри той же базы и при наличии прав у пользователя. Для внешнего получателя (не работающего в этой базе) внутренняя ссылка бесполезна — нужен внешний сервис или выгрузка.

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

Можно ли сделать гиперссылку в обычной (неуправляемой) форме?
Да. В обычных формах у надписи тоже есть свойство гиперссылки, а переход выполняется тем же ПерейтиПоНавигационнойСсылке. Различается в основном редактор формы в конфигураторе; сам принцип — надпись плюс обработчик нажатия — тот же.
Чем навигационная ссылка отличается от внешнего URL?
Навигационная (e1cib/...) ведёт на объект или список внутри конкретной базы и работает только у пользователей этой базы. Внешний URL (https://...) открывает сайт в браузере и доступен кому угодно. Процедура перехода для обоих одна.
Как получить ссылку на объект, чтобы отправить её коллеге?
Откройте объект, нажмите шестерёнку «Сервис и настройки» в правом верхнем углу и выберите «Получить ссылку». Платформа скопирует навигационную ссылку в буфер — вставляйте в письмо или чат.
Почему ссылка, отправленная в письме, не открывается у получателя?
Скорее всего, это внутренняя навигационная ссылка, а у получателя нет доступа к базе или прав на объект. Такие ссылки открываются только из клиента 1С этой же базы.
Как сделать кликабельной ячейку в отчёте?
Через расшифровку. В отчёте на СКД расшифровка по объекту формируется автоматически — двойной клик открывает карточку. Для произвольного действия задайте расшифровку вручную и обработайте событие ОбработкаРасшифровки в форме.