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