Документы и Печать · 11 мин
Как получить ссылку на документ в 1С
Как получить ссылку на документ 1С: копирование навигационной ссылки в интерфейсе, программные методы ПолучитьНавигационнуюСсылку, внешние ссылки и типичные ошибки.
Ссылка на документ в 1С нужна в двух разных ситуациях: когда пользователь хочет быстро отправить коллеге прямой путь к конкретному документу внутри базы и когда разработчик программно формирует ссылку для обмена, печати или интеграции. В обоих случаях речь идёт о навигационной ссылке — уникальном адресе объекта внутри информационной базы, а не о веб-адресе в браузере.
Навигационная ссылка выглядит примерно так: e1cib/data/Документ.РеализацияТоваровУслуг?ref=.... Она работает только внутри той же информационной базы и у пользователей с правами доступа к объекту. Если база опубликована на веб-сервере, к навигационной ссылке добавляется адрес публикации — тогда документ можно открыть через браузер.
Важно различать навигационную ссылку и ссылку как тип данных языка 1С (например, ДокументСсылка.РеализацияТоваровУслуг). Первый вариант — текстовый адрес для интерфейса, второй — программный объект, по которому выполняются запросы и обращения к реквизитам. Ниже разобраны все практические сценарии получения обоих видов.
Что такое навигационная ссылка и где она применяется
Навигационная ссылка — это текстовый идентификатор объекта внутри конкретной информационной базы. Она содержит тип объекта (документ, справочник, регистр) и его внутренний уникальный идентификатор. Платформа формирует такую ссылку автоматически для каждого объекта, и она не меняется при изменении номера, даты или реквизитов документа.
Типичные сценарии использования: пересылка коллеге точного документа вместо описания «ищи реализацию от пятого числа», вставка ссылки в задачи и письма, привязка внешних систем к объектам 1С, восстановление доступа к документу после случайного закрытия окна. В тонком клиенте и веб-клиенте навигационная ссылка открывается напрямую, без поиска по спискам.
Ограничение принципиальное: ссылка бесполезна вне своей базы. Если скопировать её и отправить человеку, работающему в другой информационной базе (даже с идентичной конфигурацией), документ не откроется — внутренние идентификаторы объектов в разных базах различаются.
Как скопировать ссылку на документ через интерфейс
В управляемом интерфейсе (тонкий клиент, веб-клиент) откройте нужный документ и нажмите кнопку «Ещё» в командной панели формы. В выпадающем меню выберите команду «Получить ссылку» — в некоторых конфигурациях она называется «Получить навигационную ссылку». Платформа покажет окно с текстом ссылки и кнопкой копирования в буфер обмена.
Альтернативный путь — стандартная команда «Вывести список» не подходит, но в списке документов можно кликнуть правой кнопкой по строке и поискать аналогичную команду в контекстном меню. В большинстве типовых конфигураций команда доступна и из формы списка, не открывая сам документ.
После копирования ссылку можно вставить в письмо, мессенджер или комментарий к задаче. Получатель, у которого открыт сеанс в той же базе, вставляет ссылку через команду «Перейти по ссылке» (обычно доступна в главном меню или через Ctrl+C/Ctrl+V в поле перехода) — и платформа сразу открывает нужный документ.
- 1Откройте документ, ссылку на который нужно получить
- 2Нажмите кнопку «Ещё» в командной панели формы
- 3Выберите команду «Получить ссылку»
- 4Скопируйте текст ссылки в буфер обмена
- 5Передайте ссылку коллеге или вставьте в нужное место
- 6Проверьте: получатель открывает ссылку в той же базе через «Перейти по ссылке»
Как получить ссылку программно во встроенном языке
Для разработчика основной инструмент — глобальный метод ПолучитьНавигационнуюСсылку(). Он принимает ссылку на объект (или объект с ключом записи регистра) и возвращает строку с навигационной ссылкой. Типичный вызов выглядит так:
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);
Сообщить(НавигационнаяСсылка);
Метод работает и на клиенте, и на сервере, но в толстом клиенте с обычными формами поведение отличается — там навигационные ссылки имеют другой формат. Для управляемых форм результат имеет вид e1cib/data/Документ.ПоступлениеТоваровУслуг?ref=....
Если нужна ссылка на конкретную строку табличной части или на запись регистра сведений, передаются соответствующие ключи. Для регистра сведений сначала формируется ключ записи через РегистрыСведений.ИмяРегистра.СоздатьКлючЗаписи(), затем ключ передаётся в ПолучитьНавигационнуюСсылку().
// Ссылка на документ
НавСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);
// Ссылка на запись регистра сведений
Ключ = РегистрыСведений.КурсыВалют.СоздатьКлючЗаписи(Отбор);
НавСсылкаЗаписи = ПолучитьНавигационнуюСсылку(Ключ);Внешние ссылки: как открыть документ через браузер
Когда база опубликована на веб-сервере, навигационная ссылка превращается в полноценный URL. Формат складывается из адреса публикации и навигационной части: http://сервер/база/ru_RU/e1cib/data/Документ.ЗаказКлиента?ref=.... Такую ссылку можно открыть в браузере — после авторизации пользователь попадёт сразу в форму документа.
Программно внешнюю ссылку собирают конкатенацией: адрес публикации берут из настроек веб-сервера или хранят в константе, а навигационную часть получают тем же ПолучитьНавигационнуюСсылку(). В веб-клиенте текущий адрес публикации можно взять из строки браузера.
Учитывайте: внешняя ссылка не обходит авторизацию. Пользователь без учётной записи и прав на документ увидит либо форму входа, либо сообщение о нарушении прав доступа. Отправлять такие ссылки вовне компании без настроенной защиты (VPN, ограничения веб-сервера) небезопасно — сам URL раскрывает внутреннюю структуру базы.
Разница между ссылкой-объектом и навигационной ссылкой
Частая путаница у начинающих разработчиков: в запросах и коде «ссылка» — это значение типа ДокументСсылка, а не строка. Такая ссылка позволяет обращаться к реквизитам через точку, участвовать в запросах и сравнениях, но её нельзя вставить в письмо как адрес. Навигационная ссылка — наоборот, строка для интерфейса, бесполезная в запросах.
Преобразование возможно в обе стороны: из объекта-ссылки навигационную строку даёт ПолучитьНавигационнуюСсылку(), а обратно объект из навигационной строки стандартными средствами не восстанавливается напрямую — обычно разбирают строку и ищут объект по уникальному идентификатору через ПолучитьСсылку(Новый УникальныйИдентификатор(...)).
Уникальный идентификатор объекта можно получить вызовом ДокументСсылка.УникальныйИдентификатор(). Именно он кодируется в параметре ref навигационной ссылки, поэтому по идентификатору можно найти объект в другой копии той же базы (например, после обмена данными).
Сравнение вариантов
Подходит пользователю без навыков программирования; работает только внутри текущей базы
Для автоматизации, рассылок и печатных форм; требует прав на изменение конфигурации или внешнюю обработку
Для доступа из браузера и внешних систем; требует опубликованной базы и настроенной безопасности
Для интеграций и поиска объекта между базами; не открывается как ссылка в интерфейсе напрямую
Типичные ошибки и ограничения
Самая распространённая ошибка — попытка открыть навигационную ссылку в другой базе. Даже если конфигурации идентичны, внутренние идентификаторы различаются, и платформа либо сообщит, что объект не найден, либо откроет совершенно другой документ. Для межбазового поиска используйте обмен по уникальному идентификатору.
Вторая ошибка — отправка ссылки пользователю без прав. Навигационная ссылка не обходит ролевую модель: если у получателя нет права чтения документа, он получит отказ в доступе. Перед рассылкой ссылок убедитесь, что у адресатов настроены нужные роли.
Третья группа проблем — программные: передача в ПолучитьНавигационнуюСсылку() объекта вместо ссылки, попытка получить ссылку на ещё не записанный документ (у него нет идентификатора) и использование навигационной ссылки в запросах, где нужна ссылка-значение. Несохранённый документ сначала нужно записать.
Как проверить, что ссылка работает
После получения ссылки проверьте её до отправки: вставьте сами через команду перехода по ссылке и убедитесь, что открывается именно нужный документ. Это занимает несколько секунд и исключает ситуацию, когда скопирована ссылка на соседний объект из списка.
Для внешних URL проверку выполняйте в браузере в режиме без сохранённой сессии (или в приватном окне): так вы увидите то же, что увидит получатель, — форму авторизации и затем документ. Если вместо документа открывается пустая страница или ошибка публикации, проблема в настройках веб-сервера, а не в самой ссылке.
Как проверить результат
Открывается форма именно того документа, с которого копировали ссылку
Сообщение «объект не найден» или открывается другой документ
После авторизации открывается форма документа
Ошибка веб-сервера, пустая страница или бесконечная форма входа
Пользователь с нужной ролью открывает документ без предупреждений
Сообщение о нарушении прав доступа
Частые вопросы о ссылках на документы 1С
Можно ли получить ссылку на документ, не открывая его?
Да. В форме списка документов выделите строку и поищите команду «Получить ссылку» в контекстном меню или кнопке «Ещё» — в типовых конфигурациях она обычно доступна. Программно достаточно иметь значение ссылки на объект, открывать форму не требуется.
Почему коллега не может открыть мою ссылку?
Три основные причины: он работает в другой информационной базе, у него нет прав на чтение этого вида документов, либо ссылка скопирована не полностью. Проверьте базу, роли пользователя и целостность строки ссылки.
Изменится ли ссылка, если перепровести или изменить документ?
Нет. Навигационная ссылка привязана к уникальному идентификатору объекта, который не меняется при редактировании, перепроведении, изменении номера или даты. Ссылка перестанет работать только при удалении документа из базы.
Как получить ссылку на документ в мобильном клиенте?
В мобильном клиенте команда получения навигационной ссылки зависит от конфигурации: в типовых решениях её обычно размещают в меню формы документа. Если команды нет, ссылку можно сформировать программно через ПолучитьНавигационнуюСсылку() и, например, отправить в письмо.
Можно ли найти документ по навигационной ссылке программно?
Напрямую стандартного метода нет. Практический подход — извлечь из строки значение параметра ref, преобразовать его в УникальныйИдентификатор и получить объект через Документы.ИмяДокумента.ПолучитьСсылку(Идентификатор), затем проверить существование объекта запросом или методом ПолучитьОбъект().
Что важно запомнить
Навигационную ссылку на документ проще всего получить через «Ещё → Получить ссылку» в форме документа, а программно — методом ПолучитьНавигационнуюСсылку(). Ссылка действует только внутри своей базы и не отменяет проверку прав доступа; для браузерного доступа требуется публикация базы на веб-сервере с корректной настройкой безопасности.