Ссылки в 1С: от навигации до печатных форм
Содержание
«Добавить ссылку в 1С» каждый понимает по-своему: кому-то нужно отправить коллеге адрес документа, кому-то — сделать кликабельную строку в отчёте, а кому-то — открыть сайт из формы. Это три разных механизма, и путают их постоянно.
Самый частый случай решается без программиста. Чтобы получить навигационную ссылку
на объект 1С, откройте документ или элемент справочника и нажмите Ещё → Получить ссылку. Программа покажет строку вида e1cib/data/... — её можно скопировать, вставить в адресную строку другого окна 1С или переслать коллеге, который работает в этой же базе. Для печатных форм, отчётов и внешних адресов (сайт, файл, почта) понадобится настройка макета или встроенный язык — разберём каждый вариант ниже.
Какие ссылки бывают в 1С и чем они отличаются
Прежде чем что-то добавлять, определитесь с типом ссылки — от этого зависит способ.
| Тип ссылки | Куда ведёт | Как добавить |
|---|---|---|
| Навигационная ссылка на объект | На документ, элемент справочника, список внутри базы | Ещё → Получить ссылку или функция ПолучитьНавигационнуюСсылку |
| Гиперссылка на форме | На объект, адрес или внешний ресурс | Декорация-надпись со свойством «Гиперссылка» |
| Ссылка-расшифровка в отчёте | На объект при двойном клике по ячейке | Свойство «Расшифровка» области макета |
| Внешний адрес (URL) | На сайт, сетевой файл, почту | ПерейтиПоНавигационнойСсылке("https://...") |
Навигационная ссылка на объект действует только внутри той же информационной базы. Переслать её пользователю другой базы бесполезно — он получит сообщение, что объект не найден.
Как быстро получить ссылку на документ или справочник
Это самый востребованный сценарий: нужно показать коллеге конкретный заказ, акт или контрагента.
- Откройте нужный объект (или встаньте на строку в списке).
- Нажмите
Ещёв правом верхнем углу формы и выберитеПолучить ссылку. - В открывшемся окне скопируйте строку целиком.
Полученный адрес выглядит примерно так: e1cib/data/Документ.РеализацияТоваровУслуг?ref=8a1c.... Префикс говорит о типе объекта:
e1cib/data/— конкретный объект (документ, элемент справочника);e1cib/list/— открыть список;e1cib/command/— выполнить команду.
Чтобы перейти по ссылке, вставьте её в поле ввода навигационной ссылки другого открытого окна. В толстом и тонком клиенте такое поле вызывается из главного меню программы. Коллега в той же базе откроет ровно тот объект, который вы ему отправили.
Команда Получить ссылку работает не только на отдельном объекте. Если вызвать её из открытого списка, вы получите ссылку на сам список — причём вместе с установленным отбором. Это удобно, когда нужно показать коллеге не один документ, а подборку: например, все неоплаченные счета за период. Отбор сохранится в ссылке и воспроизведётся при открытии.
Для личных закладок ссылка не обязательна — рядом с заголовком открытой формы есть значок звёздочки, который добавляет объект в Избранное. Но переслать избранное другому пользователю нельзя, поэтому для передачи остаётся именно навигационная ссылка.
Если у получателя нет прав на этот объект, по ссылке он увидит ошибку доступа, а не документ. Ссылка прав не добавляет — она только адресует.
Где и как хранить адреса в реквизитах
Когда ссылку нужно не передать разово, а хранить в карточке (сайт контрагента, папка с договорами, адрес электронной почты), заводят реквизит.
Для внешних адресов используют реквизит типа Строка достаточной длины (например, 500 символов) или неограниченной. Само по себе строковое поле ссылку не делает — оно просто хранит текст. Кликабельной строка становится двумя путями:
- в типовых конфигурациях у контрагента уже есть поля контактной информации, и адрес сайта там отображается как гиперссылка автоматически;
- в собственной доработке на форму добавляют декорацию-надпись и в обработчике нажатия открывают сохранённый адрес.
Если храните путь к сетевой папке или файлу, записывайте его в формате UNC (\\server\share\...) — тогда переход откроет каталог в проводнике. Пути с локальными дисками вида C:\ сработают только на той машине, где этот диск есть.
Как сделать гиперссылку на форме
Чтобы на форме появилась кликабельная подпись, добавьте элемент оформления.
- В конфигураторе откройте форму и на закладке элементов добавьте
Декорацияс видомНадпись. - В свойствах надписи включите флажок
Гиперссылка. - Для события
Нажатиесоздайте обработчик и опишите переход.
&НаКлиенте
Процедура СсылкаНаСайтНажатие(Элемент)
ПерейтиПоНавигационнойСсылке("https://nalog.gov.ru");
КонецПроцедуры
Процедура ПерейтиПоНавигационнойСсылке понимает и внешние адреса (http, https), и внутренние навигационные ссылки 1С. Для внешнего адреса она открывает страницу в браузере, для внутреннего — соответствующий объект базы.
Если адрес берётся из реквизита, подставьте его в обработчик вместо жёсткой строки:
&НаКлиенте
Процедура СайтНажатие(Элемент)
Если ЗначениеЗаполнено(Объект.АдресСайта) Тогда
ПерейтиПоНавигационнойСсылке(Объект.АдресСайта);
КонецЕсли;
КонецПроцедуры
Проверка на заполненность нужна: при пустом адресе переход завершится ошибкой.
Надпись — не единственный вариант. Обычное поле ввода, связанное со строковым реквизитом, тоже умеет работать как ссылка: в свойствах элемента формы (не самого реквизита) включите флажок Гиперссылка. Тогда значение поля отобразится синим подчёркнутым текстом, а по клику сработает всё то же событие Нажатие. Такой способ удобнее для адресов, которые пользователь редактирует прямо в карточке: пока поле в фокусе — это обычный ввод, при потере фокуса — кликабельная ссылка.
Для электронной почты передавайте адрес с префиксом mailto: — тогда переход откроет почтовый клиент с заполненным получателем:
ПерейтиПоНавигационнойСсылке("mailto:" + Объект.ЭлектроннаяПочта);
Как добавить ссылку в печатную форму и отчёт
В табличном документе ссылку делают через механизм расшифровки — двойной клик по ячейке открывает связанный объект.
В конфигураторе откройте макет, выделите ячейку (или область) и в свойстве Расшифровка укажите параметр — например, РасшифровкаНоменклатуры. При формировании печатной формы заполните этот параметр ссылкой на объект:
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.РасшифровкаНоменклатуры = ВыборкаСтрок.Номенклатура;
ТабДокумент.Вывести(Область);
Теперь двойной щелчок по строке откроет карточку номенклатуры. Пользователю не нужно искать объект вручную — он переходит к нему прямо из распечатки на экране.
Чтобы по клику в табличном документе открывался внешний адрес, положите в расшифровку строку с URL и перехватите её в обработчике поля:
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
Если ТипЗнч(Расшифровка) = Тип("Строка") Тогда
СтандартнаяОбработка = Ложь;
ПерейтиПоНавигационнойСсылке(Расшифровка);
КонецЕсли;
КонецПроцедуры
В отчётах на СКД принцип тот же: поле компоновки, которому назначена расшифровка, становится кликабельным в результате. Отдельно настраивать обработчик не нужно — система компоновки данных подставляет расшифровку сама, если поле выводит ссылочный реквизит.
Расшифровку стоит задавать только тем ячейкам, по которым действительно есть куда перейти. Если расшифровку получит заголовок или итог, двойной клик по нему выдаст пустое окно.
Важная деталь при сохранении. Расшифровки живут внутри табличного документа, поэтому при сохранении отчёта в формат mxl переходы по ячейкам сохраняются — файл можно открыть в 1С и кликать по ссылкам как прежде. А вот при выгрузке в Excel или PDF расшифровки теряются: это уже обычная таблица без связи с базой. Если ссылки должны остаться и во внешнем файле, выводите в ячейку сам текст адреса, а не только расшифровку.
Как работать со ссылками из встроенного языка
Для программного получения и открытия ссылок в платформе есть пара функций глобального контекста.
ПолучитьНавигационнуюСсылку(<Объект>) возвращает строку — навигационную ссылку на переданный объект. ПерейтиПоНавигационнойСсылке(<Строка>) открывает объект или внешний адрес по этой строке (доступна только на клиенте).
&НаКлиенте
Процедура ОткрытьСвязанныйЗаказ(Команда)
Ссылка = ПолучитьНавигационнуюСсылку(Объект.ЗаказОснование);
ПерейтиПоНавигационнойСсылке(Ссылка);
КонецПроцедуры
Отдельно стоит ПолучитьНавигационнуюСсылкуИнформационнойБазы() — она возвращает ссылку на запуск самой базы (без привязки к объекту). Её добавляют в рассылки и уведомления, чтобы одним кликом открыть нужную базу, а конкретный объект дописывают к адресу.
Помните про контекст выполнения: сформировать ссылку можно и на сервере, а вот переход ПерейтиПоНавигационнойСсылке выполняется только на клиенте. Если готовите ссылку в серверной процедуре, верните строку на клиент и уже там вызывайте переход.
Эти же функции пригодятся, когда нужно добавить ссылку в уведомление или сообщение пользователю. Сформируйте навигационную ссылку на объект, оберните её в активную ссылку сообщения — и пользователь перейдёт к документу прямо из текста предупреждения, не разыскивая его в списках. Внутренние ссылки удобны и в сообщениях об ошибках проведения: вместо «проверьте такой-то документ» даёте кликабельный адрес на сам документ.
Ещё один навигационный приём не требует кода вовсе. В командном интерфейсе формы есть Панель навигации — в неё выносят команды перехода к связанным объектам. Например, из формы заказа одним кликом открыть связанные реализации или поступления. Команду добавляют в конфигураторе на уровне формы и помещают в группу панели навигации — пользователь получает готовую ссылку-переход, не покидая карточку.
Ссылки в веб-клиенте и браузере
В веб-клиенте навигационные ссылки работают так же, но выглядят как обычный URL браузера: к адресу публикации базы добавляется фрагмент после знака #.
Например, если база опубликована по адресу https://server/buh, ссылка на документ примет вид https://server/buh/#e1cib/data/Документ.... Такую ссылку удобно отправлять в мессенджере или по почте — получатель с доступом к базе откроет объект прямо в браузере.
Чтобы получить готовый веб-адрес, в веб-клиенте используйте ту же команду Ещё → Получить ссылку — платформа сама подставит адрес публикации. Внешние ссылки (https://...) из формы открываются в новой вкладке браузера, поэтому проверьте, что всплывающие окна для сайта базы не заблокированы.
В мобильном клиенте навигационные ссылки тоже работают, но открываются внутри приложения, а не в браузере. Поэтому ссылку, отправленную коллеге, лучше сопровождать подсказкой, где её вставить: адресная строка в мобильном и в настольном клиенте выглядит по-разному.
Почему ссылка не открывается
Если по ссылке ничего не происходит или появляется ошибка, причина обычно в одном из частых мест.
www.site.ru вместо https://www.site.ru), либо браузер блокирует всплывающее окно. Дописывайте https:// и разрешите открытие вкладок для сайта базы.D:\Договоры). Замените его на сетевой путь в формате UNC (\\server\share\...), доступный всем пользователям.Частые вопросы
Чем навигационная ссылка отличается от гиперссылки?
e1cib/data/...) и работает только в ней. Гиперссылка на форме или в документе — это элемент оформления, который может вести и на объект базы, и на внешний адрес в интернете.Можно ли отправить ссылку на документ коллеге в другой базе?
Как сделать ссылку в письме из 1С?
ПолучитьНавигационнуюСсылкуИнформационнойБазы. Получатель с доступом к базе откроет её по клику.Почему в отчёте на СКД ячейка не кликается?
Открывает ли `ПерейтиПоНавигационнойСсылке` обычные сайты?
http:// или https://, функция откроет её в браузере. Внутренние ссылки 1С она открывает внутри программы.