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

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

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

Разбираем, как сделать ссылки в 1С: навигационная ссылка на объект, внешняя e1c-ссылка, гиперссылка в форме и в тексте, примеры кода и типичные ошибки.

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

Понимание механизма ссылок нужно и обычным пользователям, и разработчикам. Пользователю это даёт возможность быстро отправить коллеге точный адрес документа вместо длинных объяснений «открой реализацию от 15 числа, контрагент такой-то». Разработчику — строить уведомления, интеграции и удобные интерфейсы с переходами между объектами.

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

Какие виды ссылок существуют в 1С

Прежде чем делать ссылку, определите, какая именно нужна. Внутренняя ссылка — это значение типа «СправочникСсылка», «ДокументСсылка» и т.п., которое живёт только внутри кода и базы данных. Её нельзя отправить коллеге в мессенджер, но именно она используется в запросах, реквизитах и алгоритмах.

Навигационная ссылка — текстовое представление объекта вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=.... Она работает внутри конкретной информационной базы: по ней можно перейти в командной строке 1С, вставить в письмо или уведомление, и любой пользователь этой же базы откроет тот же объект.

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

Сравнение видов ссылок

Внутренняя ссылка (СправочникСсылка и др.)

Только внутри кода и базы. Нельзя передать текстом, но обязательна в запросах и реквизитах

Навигационная e1cib/data/...

Передаётся текстом, работает внутри одной информационной базы у всех её пользователей

Внешняя e1c://...

Запускает клиент 1С извне: из браузера, письма, другой программы. Требует правильного адреса сервера или пути к базе

Как получить ссылку на объект через интерфейс

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

Скопированную ссылку можно вставить в письмо, задачу или сообщение. Коллега, работающий в той же базе, откроет её через меню «Файл → Открыть ссылку» либо вставит в командную строку. В некоторых конфигурациях ссылку можно просто вставить в поле поиска по строке.

Учтите ограничение: навигационная ссылка привязана к конкретной базе. Если базу выгрузили и развернули в другом месте, ссылка продолжит работать, поскольку внутренний идентификатор объекта сохраняется. Но если объект удалили и создали заново «такой же», старая ссылка станет битой — идентификатор у нового объекта будет другим.

Как скопировать ссылку на объект
  1. 1
    Откройте нужный документ или элемент справочника
  2. 2
    Нажмите «Ещё» в командной панели формы
  3. 3
    Выберите «Получить ссылку»
  4. 4
    Скопируйте ссылку из появившегося окна
  5. 5
    Передайте её коллеге или сохраните в заметках

Как получить навигационную ссылку в коде

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

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

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

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

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

СсылкаНаОбъект = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Ид);

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

Как сделать внешнюю ссылку e1c:// для запуска из браузера

Внешняя ссылка собирается по шаблону: e1c://server/ИмяСервера/ИмяБазы/e1cib/data/... для клиент-серверного варианта или e1c://file/ПутьКБазе/e1cib/data/... для файлового. После служебной части подставляется та самая навигационная ссылка на объект.

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

Чтобы ссылка открывалась по клику, протокол e1c должен быть зарегистрирован в операционной системе — это происходит автоматически при установке платформы 1С. Если по клику ничего не происходит, обычно платформа установлена некорректно или установщик запускался без прав администратора.

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

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

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

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

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

Проверка корректности и битые ссылки

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

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

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

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

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

Вставили навигационную ссылку в 1С
Норма

Открывается форма нужного объекта

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

Сообщение «объект не найден» или ошибка прав

Клик по внешней ссылке e1c://
Норма

Запускается клиент 1С и открывается объект

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

Браузер не знает протокол — платформа не зарегистрирована в ОС

Ссылка.ПолучитьОбъект() в коде
Норма

Возвращается объект, доступны реквизиты

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

Возвращается Неопределено — объект удалён

Типичные ошибки при работе со ссылками

Самая частая ошибка — попытка использовать навигационную ссылку как значение типа «ссылка» в коде. Строка «e1cib/data/...» не является ссылкой на объект: её нельзя присвоить реквизиту типа «ДокументСсылка». Сначала строку нужно разобрать и получить реальную ссылку через менеджер объекта.

Вторая распространённая проблема — ссылки, собранные вручную с жёстко прописанным адресом сервера. При переезде базы на другой сервер или смене имени базы все такие ссылки в письмах и уведомлениях перестают работать. Формируйте внешние ссылки программно, беря параметры подключения из строки соединения информационной базы.

Третья группа ошибок связана с уникальными идентификаторами: разработчики сохраняют GUID объекта в сторонних системах, а затем объект пересоздают обработкой или обменом — идентификатор меняется, и внешние ссылки ломаются. Для интеграций надёжнее использовать естественные ключи (номер и дату документа, код справочника) или гарантировать неизменность GUID при обменах.

Типичные ошибки
01
Присвоение строки навигационной ссылки реквизиту типа «ссылка» — типы несовместимы, нужна разборка строки и ПолучитьСсылку()
02
Формирование ссылки до записи объекта — ссылка ведёт в никуда, сначала вызовите Записать()
03
Жёсткое прописывание адреса сервера во внешних ссылках — после переезда базы все ссылки умирают
04
Хранение GUID в сторонних системах без контроля обменов — пересоздание объекта ломает все внешние ссылки
Итог

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

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

Частые вопросы о ссылках в 1С

Можно ли отправить ссылку на документ 1С коллеге по почте?

Да, если коллега работает в той же информационной базе. Скопируйте навигационную ссылку через «Ещё → Получить ссылку» и вставьте в письмо. Получатель откроет её через «Файл → Открыть ссылку» в своей 1С. Для автоматического запуска по клику соберите внешнюю ссылку вида e1c://.

Почему ссылка из письма не открывается по клику?

Чаще всего протокол e1c не зарегистрирован в операционной системе — переустановите платформу 1С с правами администратора. Также проверьте, что ссылка полная: начинается с e1c:// и содержит адрес сервера или путь к файловой базе, а не только часть e1cib/data/.

Сохранится ли ссылка после переноса базы на другой сервер?

Навигационная часть (e1cib/data/...) сохранится, если база перенесена выгрузкой-загрузкой: уникальные идентификаторы объектов не меняются. А вот адрес сервера во внешних ссылках e1c:// придётся обновить — старые ссылки с прежним адресом работать перестанут.

Как в коде проверить, что ссылка не битая?

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

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

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

Можно ли сделать ссылку на конкретную строку табличной части?

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