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

Разработка и Конфигурация · 10 мин

Как сделать ссылку в 1С:Предприятие

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

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

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

Что такое ссылка в 1С и какие виды бывают

В платформе 1С:Предприятие термин «ссылка» используется в четырёх основных значениях. Первое — ссылочный тип данных: значение, которое однозначно указывает на объект базы (документ, элемент справочника, запись регистра). Такая ссылка хранит уникальный идентификатор объекта и используется в реквизитах, запросах и коде.

Второе значение — навигационная ссылка. Это строка вида e1cib/data/Справочник.Номенклатура?ref=..., которую можно вставить в письмо или сообщение. При переходе по ней в клиенте 1С открывается нужный объект. Третье — гиперссылка в форме, отчёте или текстовом документе, по которой выполняется переход или команда. Четвёртое — обычная веб-ссылка (URL) на внешний сайт, которую можно вывести в форме или печатной форме.

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

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

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

Как скопировать навигационную ссылку
  1. 1
    Откройте нужный документ или элемент справочника
  2. 2
    Нажмите «Ещё» → «Получить ссылку» или Ctrl+F11
  3. 3
    Скопируйте строку из появившегося окна
  4. 4
    Отправьте ссылку коллеге, работающему в той же базе
  5. 5
    Проверьте: у получателя ссылка открывает тот же объект

Как программно получить ссылку на объект

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

Идентификатор = Новый УникальныйИдентификатор("a1b2c3d4-...");

СсылкаНаТовар = Справочники.Номенклатура.ПолучитьСсылку(Идентификатор);

Обратный приём — получить идентификатор из ссылки:

Ид = СсылкаНаТовар.УникальныйИдентификатор();

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

Как создать навигационную ссылку программно

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

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

// Результат: e1cib/data/Документ.РеализацияТоваровУслуг?ref=...

Такая ссылка удобна для уведомлений: например, при согласовании документа система может отправить ответственному письмо с навигационной ссылкой, и тот откроет документ одним кликом через «Файл → Открыть навигационную ссылку» или глобальный поиск по строке. Учтите, что функция работает и на сервере, и на клиенте, но итоговая строка привязана к конкретной базе.

Как вставить гиперссылку в форму, отчёт и печатную форму

Гиперссылка в управляемой форме

В управляемой форме поле с видом «Поле надписи» может работать как гиперссылка: установите свойство Гиперссылка в значение «Истина» и обработайте событие Нажатие. В обработчике можно открыть объект, выполнить команду или перейти на внешний сайт через ЗапуститьПриложение() либо ПерейтиПоНавигационнойСсылке().

Ссылка в табличном документе и отчёте

В ячейке табличного документа есть свойство Гиперссылка и Текст. Если заполнить ячейку значением ссылочного типа и включить гиперссылку, при просмотре отчёта клик по ячейке откроет объект. В СКД (системе компоновки данных) ссылочные поля по умолчанию интерактивны: двойной клик по значению открывает расшифровку, а через настройки «Параметры расшифровки» можно задать открытие объекта или произвольный отчёт.

Веб-ссылка в печатной форме

Чтобы вывести внешнюю ссылку (например, на страницу оплаты или трек-номер), поместите в ячейку макета текст URL и установите свойство гиперссылки. При выводе в PDF или отправке по почте получатель сможет перейти по адресу. Проверяйте, что ссылка формируется корректно: лишний пробел или перенос строки внутри URL сделает её нерабочей.

Какой способ выбрать

Ctrl+F11 в интерфейсе

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

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

Для автоматических уведомлений и интеграций; требует доработки кода

Гиперссылка в форме/отчёте

Для интерактивных форм и отчётов внутри системы; работает только в клиенте 1С

Веб-ссылка (URL)

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

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

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

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

Типичные ошибки
01
Передача навигационной ссылки пользователю другой базы — объект не откроется или откроется неверный
02
Использование ПолучитьСсылку() без проверки существования объекта — появляются битые ссылки
03
Хранение ссылки в строковом реквизите вместо ссылочного — теряется контроль целостности
04
Формирование URL в печатной форме с пробелами и переносами — ссылка не кликабельна

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

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

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

Если СсылкаНаТовар.ПолучитьОбъект() = Неопределено Тогда

// Ссылка битая — объекта в базе нет

КонецЕсли;

Дополнительно сверьте ключевые реквизиты: номер и дату документа, наименование элемента справочника. Это защитит от ситуации, когда ссылка формально валидна, но указывает не на тот объект — например, после обмена данными между базами.

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

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

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

Открывается именно тот объект, с которого ссылка скопирована

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

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

Программная ссылка
Норма

ПолучитьОбъект() возвращает объект с верными реквизитами

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

ПолучитьОбъект() возвращает Неопределено

Гиперссылка в отчёте
Норма

Клик по ячейке открывает объект или расшифровку

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

Ячейка отображается как обычный текст без реакции

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

Можно ли открыть навигационную ссылку 1С в браузере?

Напрямую — нет: формат e1cib понимает только клиент 1С. Если база опубликована на веб-сервере, можно сформировать веб-ссылку на объект, но это требует отдельной настройки публикации и прав доступа.

Чем навигационная ссылка отличается от уникального идентификатора?

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

Почему после переноса данных ссылки стали битыми?

Если перенос выполнялся не штатными средствами (например, загрузкой по наименованиям), объектам присвоились новые идентификаторы, а старые ссылки остались указывать на несуществующие GUID. Используйте типовые механизмы синхронизации, сохраняющие идентификаторы.

Как отправить коллеге ссылку на конкретную строку табличной части?

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

Можно ли сделать ссылку на объект в письме, отправляемом из 1С?

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

Что делать, если команда «Получить ссылку» отсутствует в меню «Ещё»?

Проверьте, что форма открыта в режиме управляемого приложения и объект записан в базу — для нового несохранённого объекта ссылки ещё не существует. Запишите объект и повторите попытку, либо используйте Ctrl+F11.

Итог

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

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