Разработка и Конфигурация · 9 мин
Как сделать гиперссылку на документ в 1С
Как сделать гиперссылку на документ в 1С: ПолучитьНавигационнуюСсылку, командная панель, макеты и печатные формы. Примеры кода и частые ошибки.
Гиперссылка на документ в 1С — это строка специального вида, которая позволяет открыть конкретный объект базы одним кликом или программно. Такие ссылки используются в отчётах, печатных формах, табличных документах, элементах управляемых форм и при обмене данными между сеансами и внешними системами.
Задача решается несколькими способами в зависимости от контекста: через метод ПолучитьНавигационнуюСсылку(), через стандартную команду «Ещё — Получить ссылку» в интерфейсе, через расшифровку отчётов на СКД или через размещение ссылки в макете табличного документа. Ниже разобраны все рабочие варианты с примерами кода для управляемых и обычных форм.
Важно понимать разницу между навигационной ссылкой и обычной текстовой строкой. Навигационная ссылка имеет вид e1cib/data/Документ.РеализацияТоваровУслуг?ref=... и работает только внутри информационной базы 1С — её нельзя открыть в браузере как обычный URL без публикации базы на веб-сервере.
Получение навигационной ссылки программно
Основной способ — метод ПолучитьНавигационнуюСсылку(). Он вызывается у объекта «ссылочного» типа (документа, справочника, задачи) и возвращает строку, уникально идентифицирующую объект в базе. Пример для управляемого приложения:
&НаСервере
Процедура СформироватьСсылку()
ДокСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("0001", ТекущаяДатаСеанса());
Если Не ДокСсылка.Пустая() Тогда
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(ДокСсылка);
КонецЕсли;
КонецПроцедуры
Метод доступен и на клиенте, и на сервере. Если у вас уже есть переменная типа ДокументСсылка, достаточно одной строки: Ссылка = ПолучитьНавигационнуюСсылку(МояСсылка);. Полученную строку можно присвоить реквизиту формы, вывести в сообщение, записать в регистр или передать во внешнюю систему.
Для открытия документа по такой ссылке из кода используется команда ПерейтиПоНавигационнойСсылке(Ссылка) на клиенте — платформа сама определит тип объекта и откроет нужную форму. Это удобно для кнопок-переходов в собственных рабочих местах.
Ссылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);
ПерейтиПоНавигационнойСсылке(Ссылка); // открыть документГиперссылка через интерфейс без программирования
Если нужно просто скопировать ссылку на документ и отправить коллеге, программировать ничего не требуется. В управляемом интерфейсе («Такси») откройте документ, нажмите кнопку «Ещё» в командной панели формы и выберите пункт «Получить ссылку». Платформа покажет окно с готовой навигационной ссылкой, которую можно скопировать в буфер обмена.
Получатель вставляет эту строку в команду «Перейти по ссылке» (доступна через главное меню или сочетание клавиш в отдельных версиях платформы) — и документ открывается у него в том же сеансе. Условие: оба пользователя работают в одной информационной базе, и у получателя есть права на просмотр этого документа.
- 1Откройте нужный документ в списке или из карточки
- 2Нажмите «Ещё» в командной панели формы
- 3Выберите «Получить ссылку» и скопируйте строку
- 4Передайте ссылку коллеге или сохраните в заметку
- 5Для открытия используйте «Перейти по ссылке» в главном меню
Гиперссылка в табличном документе и печатной форме
Частая задача — сделать кликабельную ссылку на документ внутри отчёта или печатной формы, выведенной в табличный документ. Для этого у области или ячейки заполняется свойство Расшифровка, а в обработчике ОбработкаРасшифровки поля табличного документа выполняется переход.
Область = ТабДок.Область("R" + НомерСтроки + "C2");
Область.Текст = Строка(ДокСсылка);
Область.Расшифровка = ПолучитьНавигационнуюСсылку(ДокСсылка);
На форме отчёта в обработчике расшифровки достаточно проверить, что в расшифровке пришла навигационная ссылка, и выполнить переход:
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(Расшифровка) = Тип("Строка") Тогда
ПерейтиПоНавигационнойСсылке(Расшифровка);
КонецЕсли;
КонецПроцедуры
Ссылки в отчётах на СКД
В отчётах на системе компоновки данных расшифровка работает «из коробки»: если в выборку попадает поле типа ДокументСсылка, двойной клик по ячейке открывает стандартное меню расшифровки, где доступен пункт «Открыть». Никакого кода для базового сценария писать не нужно.
Если требуется нестандартное поведение — например, открывать не сам документ, а связанный с ним отчёт, — переопределяется обработчик ОбработкаРасшифровки в модуле формы отчёта. Там из ДанныеРасшифровки извлекается значение поля и выполняется нужное действие, включая переход по навигационной ссылке.
Способы сделать ссылку на документ
Универсальный программный способ; подходит для форм, отчётов, обмена. Требует кода.
Без программирования, для разовой передачи ссылки коллеге. Только вручную.
Кликабельные ссылки в печатных формах и отчётах. Нужен обработчик на форме.
Работает автоматически для ссылочных полей отчёта. Ограничена стандартным меню.
Гиперссылка в элементе формы и надписи
На управляемой форме можно разместить поле надписи или декорацию с видом «Надпись» и включить у неё свойство «Гиперссылка». При нажатии сработает обработчик Нажатие или ОбработкаНавигационнойСсылки, в котором открывается документ. Второй вариант предпочтительнее: платформа сама передаёт в обработчик строку навигационной ссылки, если она задана в свойстве элемента.
&НаКлиенте
Процедура ДекорацияДокументОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФС, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПерейтиПоНавигационнойСсылке(НавигационнаяСсылкаФС);
КонецПроцедуры
Такой приём применяется в панелях навигации, карточках-дашбордах и формах-агрегатах, где пользователь должен одним кликом проваливаться в первичный документ. Убедитесь, что навигационная ссылка формируется на сервере при обновлении данных формы, иначе после изменения реквизита ссылка может указывать на устаревший объект.
Ограничения и типичные ошибки
Навигационная ссылка привязана к конкретной информационной базе. После переноса данных в другую базу (например, из рабочей в тестовую с другим набором объектов) ссылка может указывать на несуществующий объект или на другой документ с совпавшим внутренним идентификатором — поэтому ссылки нельзя использовать как надёжный внешний идентификатор. Для интеграций применяйте GUID через XMLСтрока(Ссылка) или метод УникальныйИдентификатор().
Вторая частая проблема — права доступа. Ссылка корректна, но при переходе пользователь получает ошибку нарушения прав. Проверяйте доступность объекта через RLS и роли до того, как показывать активную ссылку в интерфейсе.
Проверка результата
После внедрения проверьте три вещи: ссылка формируется для существующего (записанного) документа; переход по ней открывает именно тот объект, который ожидался; у пользователя без прав поведение контролируемое — сообщение об ошибке, а не зависание формы. Для отладки выведите сформированную строку в журнал или сообщение и сравните со ссылкой, полученной через «Ещё → Получить ссылку» в интерфейсе — они должны совпадать.
Как проверить результат
Начинается с e1cib/data/ и содержит тип объекта
Пустая строка или отсутствует параметр ref
Открывается форма именно того документа
Открывается другой объект или ошибка «объект не найден»
Документ открывается или выдаётся понятное сообщение
Аварийное завершение или пустая форма
Что важно запомнить
Гиперссылка на документ создаётся методом ПолучитьНавигационнуюСсылку() или кнопкой «Ещё → Получить ссылку». Переход выполняется через ПерейтиПоНавигационнойСсылке(). Ссылка валидна только внутри своей базы — для интеграций используйте GUID.
Частые вопросы
Можно ли открыть документ 1С по ссылке из браузера?
Да, если база опубликована на веб-сервере. К адресу публикации добавляется навигационная ссылка, и при наличии сессии с авторизацией документ откроется в тонком или веб-клиенте. Без публикации базы строка e1cib работает только внутри клиентского приложения.
Чем навигационная ссылка отличается от GUID документа?
Навигационная ссылка — служебная строка платформы для переходов внутри базы. GUID (уникальный идентификатор ссылки) — стабильный идентификатор объекта, который сохраняется при обмене между связанными базами и подходит для интеграций.
Почему ПолучитьНавигационнуюСсылку возвращает пустую строку?
Чаще всего передана пустая ссылка или объект ещё не записан. Проверяйте Не Ссылка.Пустая() перед вызовом и убедитесь, что документ записан в базу.
Как сделать ссылку на конкретную строку табличной части?
Штатного механизма ссылки на строку нет. Открывайте документ по навигационной ссылке, а затем программно активизируйте нужную строку в обработчике формы, передав номер строки через параметры открытия.
Работает ли ссылка после удаления документа?
Нет. При переходе по ссылке на удалённый объект платформа сообщит, что объект не найден. Если документ только помечен на удаление, ссылка откроет его, но с признаком пометки.