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

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

Как открыть ссылку в 1С программно

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

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

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

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

Какие бывают ссылки в 1С и почему это важно

Перед выбором метода определите, что именно нужно открыть. В практике встречаются четыре типа ссылок: веб-адреса (http/https), навигационные ссылки на объекты информационной базы, пути к файлам на диске или в сети и команды запуска внешних приложений. Каждый тип обрабатывается своим механизмом платформы.

Навигационная ссылка внутри базы имеет вид e1cib/data/Справочник.Контрагенты?ref=... и позволяет открыть конкретный объект — документ, элемент справочника, запись регистра. Такая ссылка не имеет смысла вне 1С, поэтому передавать её браузеру бессмысленно.

Веб-ссылка, наоборот, открывается средствами операционной системы — браузером по умолчанию. Файловые пути (например, \\server\docs\договор.pdf) система открывает ассоциированным приложением. Путаница между типами — самая частая причина неработающего кода.

Открытие веб-ссылки в браузере

Для открытия http/https-адресов в актуальных версиях платформы используется метод глобального контекста ФайловаяСистема.ОткрытьНавигационнуюСсылку(). Он асинхронный, не блокируется системой защиты и корректно работает в тонком, толстом и веб-клиенте.

ФайловаяСистема.ОткрытьНавигационнуюСсылку("https://example.com/page");

В старых релизах применялся синхронный метод ПерейтиПоНавигационнойСсылке("https://..."). Он до сих пор работает, но в режиме совместимости с новыми версиями может требовать отключения модальности и выдавать предупреждения. Для нового кода предпочтителен вариант через ФайловаяСистема.

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

1c
Адрес = "https://example.com/search?q=" + КодироватьСтроку(НаименованиеКонтрагента, СпособКодированияСтроки.КодировкаURL);
ФайловаяСистема.ОткрытьНавигационнуюСсылку(Адрес);

Переход к объекту базы по навигационной ссылке

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

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

ПерейтиПоНавигационнойСсылке(НавСсылка);

Альтернатива без навигационных ссылок — метод ОткрытьЗначение(ДокументСсылка). Он открывает объект в текущем окне клиента и часто проще в применении. Разница в том, что ПерейтиПоНавигационнойСсылке работает через механизм глобальной навигации и подходит, когда ссылка хранится как строка, например пришла из внешней системы или из поля ввода.

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

Открытие файлов и запуск внешних приложений

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

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

Частая ситуация: файл хранится в базе, а открыть его нужно на клиенте. В этом случае сначала получите файл из хранилища во временный каталог через ПолучитьФайл() или работу с временным хранилищем, и только потом открывайте локальный путь. Пытаться открыть «ссылку на значение» как файл бесполезно — это не файловый путь.

Открытие ссылки из поля формы и из уведомлений

Если ссылка хранится в реквизите объекта (например, «Сайт контрагента»), типовой сценарий — кнопка или гиперссылка на форме, в обработчике которой вызывается открытие адреса. Перед открытием проверьте, что строка не пустая и начинается с допустимой схемы (http://, https://, mailto:), иначе пользователь получит ошибку операционной системы.

Для mailto-ссылок тот же механизм открывает почтовый клиент по умолчанию с заполненным адресом получателя. Это простой способ добавить кнопку «Написать письмо» без настройки учётной записи почты в самой 1С.

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

Порядок действий для ссылки из реквизита
  1. 1
    Проверьте, что реквизит заполнен и строка начинается с http:// или https://
  2. 2
    При необходимости добавьте схему к адресу без неё
  3. 3
    Вызовите ФайловаяСистема.ОткрытьНавигационнуюСсылку(Адрес) в клиентской процедуре
  4. 4
    Убедитесь, что в браузере открылась ожидаемая страница

Ограничения, защита от опасных действий и типичные ошибки

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

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

Типичные ошибки
01
Вызов открытия ссылки в серверной процедуре — методы навигации доступны только на клиенте
02
Передача навигационной ссылки e1cib в браузер — такая ссылка работает только внутри 1С
03
Отсутствие проверки пустой строки адреса — пользователь получает ошибку ОС вместо понятного сообщения
04
Кириллица и пробелы в URL без кодирования — обрезанный или неверный адрес
05
Открытие ссылки из обработчика ожидания в веб-клиенте — браузер блокирует всплывающее окно

Как проверить, что переход сработал

Методы открытия ссылок не возвращают осмысленный результат: факт «браузер открылся» платформа не контролирует. Поэтому проверка строится на косвенных признаках и тестировании в целевых клиентах — тонком, толстом и веб, если они используются.

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

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

Открытие http-ссылки
Норма

Запустился браузер по умолчанию с нужной страницей

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

Ничего не происходит или ошибка защиты от опасных действий

Переход по навигационной ссылке
Норма

Открылась форма именно того объекта, ссылка на который получена

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

Открывается пустая форма или сообщение об отсутствии объекта

Открытие файла
Норма

Файл открылся в ассоциированной программе

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

Ошибка «файл не найден» — путь недоступен с клиентского компьютера

Работа в веб-клиенте
Норма

Ссылка открывается при нажатии кнопки

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

Браузер блокирует окно при вызове из обработчика ожидания

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

Итог

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

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

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

Чем отличается ПерейтиПоНавигационнойСсылке от ОткрытьЗначение?

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

Почему код открытия ссылки выдаёт ошибку «Переменная не определена: ФайловаяСистема»?

Методы ФайловаяСистема появились в относительно свежих версиях платформы. Если релиз старый или включён жёсткий режим совместимости, используйте глобальные методы ПерейтиПоНавигационнойСсылке и ЗапуститьПриложение. Также проверьте, что код находится в клиентском контексте.

Как открыть ссылку на сервере 1С, без клиента?

Открыть браузер на сервере нельзя и обычно не нужно. Если задача — получить данные по адресу, используйте HTTPСоединение и HTTP-запросы: это программное обращение к ресурсу без участия браузера. Открытие интерактивной страницы возможно только на клиенте.

Можно ли открыть ссылку в конкретном браузере, а не в браузере по умолчанию?

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

Почему в веб-клиенте ссылка не открывается, а в тонком клиенте работает?

Чаще всего браузер блокирует всплывающее окно, потому что вызов происходит не из действия пользователя — например, из обработчика ожидания или после асинхронного запроса к серверу. Перенесите открытие ссылки в обработчик нажатия кнопки или гиперссылки.

Как безопасно открывать ссылки, полученные из внешних систем?

Проверяйте, что строка начинается с разрешённой схемы (http, https, mailto), отсекайте пробелы и управляющие символы, не передавайте такие строки в ЗапуститьПриложение. При сомнениях покажите пользователю адрес и дайте подтвердить переход.