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

Документы и Печать · 11 мин

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

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

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

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

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

Что такое навигационная ссылка и где она применяется

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

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

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

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

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

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

После копирования ссылку можно вставить в письмо, мессенджер или комментарий к задаче. Получатель, у которого открыт сеанс в той же базе, вставляет ссылку через команду «Перейти по ссылке» (обычно доступна в главном меню или через Ctrl+C/Ctrl+V в поле перехода) — и платформа сразу открывает нужный документ.

Порядок действий в интерфейсе
  1. 1
    Откройте документ, ссылку на который нужно получить
  2. 2
    Нажмите кнопку «Ещё» в командной панели формы
  3. 3
    Выберите команду «Получить ссылку»
  4. 4
    Скопируйте текст ссылки в буфер обмена
  5. 5
    Передайте ссылку коллеге или вставьте в нужное место
  6. 6
    Проверьте: получатель открывает ссылку в той же базе через «Перейти по ссылке»

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

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

НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);

Сообщить(НавигационнаяСсылка);

Метод работает и на клиенте, и на сервере, но в толстом клиенте с обычными формами поведение отличается — там навигационные ссылки имеют другой формат. Для управляемых форм результат имеет вид e1cib/data/Документ.ПоступлениеТоваровУслуг?ref=....

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

bsl
// Ссылка на документ
НавСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);

// Ссылка на запись регистра сведений
Ключ = РегистрыСведений.КурсыВалют.СоздатьКлючЗаписи(Отбор);
НавСсылкаЗаписи = ПолучитьНавигационнуюСсылку(Ключ);

Внешние ссылки: как открыть документ через браузер

Когда база опубликована на веб-сервере, навигационная ссылка превращается в полноценный URL. Формат складывается из адреса публикации и навигационной части: http://сервер/база/ru_RU/e1cib/data/Документ.ЗаказКлиента?ref=.... Такую ссылку можно открыть в браузере — после авторизации пользователь попадёт сразу в форму документа.

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

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

Разница между ссылкой-объектом и навигационной ссылкой

Частая путаница у начинающих разработчиков: в запросах и коде «ссылка» — это значение типа ДокументСсылка, а не строка. Такая ссылка позволяет обращаться к реквизитам через точку, участвовать в запросах и сравнениях, но её нельзя вставить в письмо как адрес. Навигационная ссылка — наоборот, строка для интерфейса, бесполезная в запросах.

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

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

Сравнение вариантов

Команда «Получить ссылку» в интерфейсе

Подходит пользователю без навыков программирования; работает только внутри текущей базы

ПолучитьНавигационнуюСсылку() в коде

Для автоматизации, рассылок и печатных форм; требует прав на изменение конфигурации или внешнюю обработку

Внешний URL через веб-публикацию

Для доступа из браузера и внешних систем; требует опубликованной базы и настроенной безопасности

Уникальный идентификатор объекта

Для интеграций и поиска объекта между базами; не открывается как ссылка в интерфейсе напрямую

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

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

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

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

Типичные ошибки
01
Отправка навигационной ссылки пользователю другой базы — документ не откроется или откроется чужой объект
02
Попытка получить ссылку на незаписанный документ — метод вернёт пустую или некорректную строку
03
Использование навигационной строки в запросе вместо значения типа ДокументСсылка — запрос завершится ошибкой
04
Игнорирование прав доступа — получатель ссылки без нужных ролей увидит отказ в доступе

Как проверить, что ссылка работает

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

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

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

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

Открытие навигационной ссылки в той же базе
Норма

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

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

Сообщение «объект не найден» или открывается другой документ

Внешний URL в браузере
Норма

После авторизации открывается форма документа

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

Ошибка веб-сервера, пустая страница или бесконечная форма входа

Права получателя
Норма

Пользователь с нужной ролью открывает документ без предупреждений

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

Сообщение о нарушении прав доступа

Частые вопросы о ссылках на документы 1С

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

Да. В форме списка документов выделите строку и поищите команду «Получить ссылку» в контекстном меню или кнопке «Ещё» — в типовых конфигурациях она обычно доступна. Программно достаточно иметь значение ссылки на объект, открывать форму не требуется.

Почему коллега не может открыть мою ссылку?

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

Изменится ли ссылка, если перепровести или изменить документ?

Нет. Навигационная ссылка привязана к уникальному идентификатору объекта, который не меняется при редактировании, перепроведении, изменении номера или даты. Ссылка перестанет работать только при удалении документа из базы.

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

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

Можно ли найти документ по навигационной ссылке программно?

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

Итог

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

Навигационную ссылку на документ проще всего получить через «Ещё → Получить ссылку» в форме документа, а программно — методом ПолучитьНавигационнуюСсылку(). Ссылка действует только внутри своей базы и не отменяет проверку прав доступа; для браузерного доступа требуется публикация базы на веб-сервере с корректной настройкой безопасности.