Разработка и Конфигурация · 10 мин
Как создать ссылку на объект 1С
Как получить ссылку на объект 1С: навигационная ссылка, ПолучитьСсылку, уникальный идентификатор. Пошаговые инструкции для пользователя и разработчика.
Ссылка на объект в 1С — это способ однозначно указать на конкретный элемент справочника, документ или запись регистра. Такие ссылки нужны, чтобы поделиться документом с коллегой, открыть объект из внешней системы, сопоставить данные при обмене или обратиться к объекту из кода. В зависимости от задачи используются разные виды ссылок: навигационные (для человека), программные (для кода) и уникальные идентификаторы (для интеграций).
Главная сложность в том, что термин «ссылка» в 1С означает сразу несколько разных вещей. Пользователь под ссылкой обычно понимает строку, которую можно отправить в мессенджер, а разработчик — значение типа «СправочникСсылка» или GUID. Ниже разобраны все практические сценарии: от копирования навигационной ссылки в пару кликов до получения ссылки по GUID и обратно.
Какие виды ссылок на объект существуют в 1С
Прежде чем создавать ссылку, определите, для чего она нужна. В платформе 1С:Предприятие применяются три основных вида, и они не взаимозаменяемы.
Навигационная ссылка — строка вида e1cib/data/Справочник.Номенклатура?ref=.... Она открывает объект внутри клиентского приложения 1С: тонкого, толстого или веб-клиента. Такую ссылку можно отправить коллеге, и при переходе у него откроется тот же документ — при условии, что он работает в той же информационной базе и имеет права на объект.
Программная ссылка — значение встроенного языка (например, Документы.РеализацияТоваровУслуг.ПустаяСсылка() или результат поиска). Она существует только внутри сеанса кода и используется для чтения реквизитов, записи связанных объектов и построения запросов.
Уникальный идентификатор (GUID) — 36-символьная строка вида 8a3f5c2e-...., которая хранится в базе данных и не меняется при переносе объекта между базами при правильно настроенном обмене. Именно GUID используют внешние системы, http-сервисы и механизмы синхронизации.
Как скопировать навигационную ссылку через интерфейс
Самый простой сценарий не требует никаких навыков программирования. Откройте нужный объект — документ, элемент справочника, задачу — и нажмите кнопку «Ещё» в командной панели формы. В типовых конфигурациях на управляемых формах там есть команда «Получить ссылку» или «Копировать навигационную ссылку». После нажатия ссылка окажется в буфере обмена либо отобразится в диалоге, откуда её можно скопировать.
В некоторых конфигурациях команда называется «Добавить в избранное» или находится в подменю «Сервис». Если команды нет совсем — вероятно, она скрыта настройкой командного интерфейса, и её может вернуть администратор через «Изменить форму».
Полученную строку вставьте в письмо, чат или задачу. Коллега, работающий в той же базе, сможет выполнить переход: в тонком клиенте ссылку вводят через меню «Сервис — Перейти по ссылке» либо просто кликают по ней, если она оформлена как гиперссылка внутри 1С.
- 1Откройте объект: документ или элемент справочника
- 2Нажмите «Ещё» в командной панели формы
- 3Выберите «Получить ссылку» или «Копировать навигационную ссылку»
- 4Вставьте ссылку из буфера обмена туда, куда нужно
- 5Проверьте: коллега в той же базе должен открыть объект по этой ссылке
Как получить программную ссылку в коде
Разработчику чаще всего нужна не строка, а значение ссылки для дальнейшей работы. Есть несколько типовых способов её получить.
Если объект уже найден запросом или создаётся программно, ссылка доступна через свойство Ссылка объекта или через выборку запроса. Для создания ссылки на ещё не записанный объект используется метод ПолучитьСсылку() у объекта — это позволяет заранее заполнить реквизиты связанных таблиц до записи самого объекта.
НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НоваяСсылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор);
НовыйДок.УстановитьСсылкуНового(НоваяСсылка);
НовыйДок.Записать();Обратная задача — найти объект по известному GUID — решается через ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаGUID)). После этого стоит проверить, что объект реально существует, иначе при обращении к его данным возникнет ошибка или вы получите «битую» ссылку.
Для получения навигационной ссылки из кода применяется функция ПолучитьНавигационнуюСсылку(Ссылка). Она удобна, когда нужно программно сформировать письмо уведомление со ссылкой на документ или вывести гиперссылку в отчёт.
Как получить GUID объекта для интеграции
При обмене данными с внешними системами — сайтом, CRM, складским ПО — навигационная ссылка бесполезна, потому что внешняя система не умеет открывать клиент 1С. Здесь используют уникальный идентификатор.
Получить GUID из кода просто: Строка(Ссылка.УникальныйИдентификатор()). Внешняя система сохраняет эту строку у себя и передаёт обратно при запросах. Важно помнить ограничение: GUID нельзя увидеть в обычной форме объекта без дополнительных инструментов — для просмотра используют консоль запросов, внешние обработки «показать GUID» или программный вывод.
Если нужно восстановить ссылку по GUID из строки, полученной от внешней системы, сначала определите тип объекта — сам по себе GUID не содержит информации о том, это документ или справочник. Обычно тип передают рядом с идентификатором в формате обмена.
Как сослаться на объект из внешнего приложения или веб-клиента
Для веб-клиента навигационная ссылка дополняется адресом публикации базы: http://сервер/база/#e1cib/data/.... Такая ссылка открывает объект прямо в браузере после аутентификации пользователя. Это удобный способ встроить переходы к документам в корпоративный портал или почтовые уведомления.
Если объект нужно отдать наружу в виде данных, а не формы, правильнее опубликовать http-сервис или использовать стандартный OData-интерфейс. В OData каждый объект доступен по URL, включающему имя сущности и GUID, например .../odata/standard.odata/Document_РеализацияТоваровУслуг(guid'...'). Доступ к OData включается в настройках публикации и требует осознанной настройки прав.
Сравнение вариантов
Подходит для пользователей внутри той же базы; не работает для внешних систем и не содержит данных объекта
Подходит для интеграций и сопоставления объектов; требует отдельно знать тип объекта
Подходит для доступа извне с передачей данных; требует публикации, настройки прав и защиты соединения
Как проверить корректность ссылки и найти «битые» ссылки
После удаления объектов в базе могут остаться ссылки на несуществующие записи — так называемые битые ссылки. Признак программно: запрос по ссылке возвращает пустую выборку, а обращение к реквизитам вызывает ошибку. В интерфейсе битая ссылка часто отображается как строка вида «<Объект не найден>».
Проверка в коде выполняется простым запросом по ссылке или проверкой Ссылка.ПолучитьОбъект() на Неопределено — хотя второй способ медленнее, так как вычитывает объект целиком. Для массовой диагностики используйте штатную обработку «Поиск и удаление дублей» и «Удаление помеченных объектов» с контролем ссылочной целостности.
Как проверить результат
Открывается форма именно того объекта, с которого копировали ссылку
Ошибка «объект не найден» или открывается другая база
Запрос по ссылке возвращает одну строку с ожидаемыми данными
Пустая выборка — объект удалён или GUID от другой базы
У коллеги в той же базе объект открывается
Недостаточно прав или коллега работает в другой информационной базе
Частые ошибки и ограничения
Самая распространённая ошибка — попытка использовать навигационную ссылку из одной базы в другой. Копии базы (рабочая и тестовая) могут содержать объекты с одинаковыми GUID, но если базы разные, ссылка либо не откроется, либо откроет не тот объект. Всегда уточняйте, из какой базы взята ссылка.
Вторая ошибка — хранение навигационных ссылок «про запас» в документах Word или Excel с ожиданием, что они будут работать вечно. При удалении объекта, переходе на другую конфигурацию или смене публикации веб-сервера ссылки перестают действовать. Для долговременного хранения надёжнее фиксировать номер и дату документа либо GUID вместе с типом объекта.
Отдельное ограничение касается прав: даже корректная ссылка не откроет объект пользователю без доступа. Если коллега сообщает об ошибке при переходе, сначала проверьте его роли, а не саму ссылку.
FAQ
Можно ли получить ссылку на объект, не открывая его форму?
Да. В списке документов или справочника установите курсор на строку и используйте команду «Ещё — Получить ссылку» панели списка, если она настроена. В коде достаточно иметь значение ссылки из запроса — открывать форму не требуется.
Почему ссылка, скопированная вчера, сегодня не работает?
Наиболее вероятные причины: объект удалили, вы или получатель сменили информационную базу, либо изменилась публикация веб-клиента. Проверьте существование объекта поиском по номеру и дате.
Чем GUID отличается от навигационной ссылки?
GUID — это просто идентификатор объекта без указания его типа и способа открытия. Навигационная ссылка включает тип объекта и предназначена для открытия формы в клиенте 1С. Для интеграций используют GUID, для переходов пользователей — навигационную ссылку.
Как сделать ссылку на объект для пользователя без доступа к 1С?
Напрямую — никак: навигационная ссылка требует клиентское приложение и права. Варианты обхода: сформировать печатную форму или PDF и отправить файлом, либо опубликовать http-сервис, который отдаёт данные объекта внешнему приложению.
Сохранится ли ссылка при обмене между базами?
GUID сохраняется при обмене через планы обмена и типовую конвертацию данных — поэтому сопоставление объектов между базами строят именно на нём. Навигационные ссылки между разными базами не переносятся и не действуют.
Как программно проверить, что ссылка не «битая»?
Выполните запрос с условием «Ссылка = &Ссылка» к соответствующей таблице. Если выборка пустая — объекта не существует. Метод ПолучитьОбъект() тоже подходит, но он медленнее, так как загружает объект целиком.
Что важно запомнить
Для пользователя ссылка создаётся командой «Получить ссылку» в меню «Ещё», для кода — методами ПолучитьСсылку() и ПолучитьНавигационнуюСсылку(), для интеграций — через GUID. Ссылка действует только в своей базе и при наличии прав у получателя; перед массовым использованием проверяйте объекты на существование.