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