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

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

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

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

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

Главное, что нужно понимать: 1С не «встраивает» браузер внутрь себя (за исключением специального поля HTML-документа), а передаёт ссылку операционной системе, которая открывает её в браузере по умолчанию. Поэтому корректность результата зависит и от кода, и от настроек рабочего места: какой браузер назначен по умолчанию, не заблокирован ли запуск внешних приложений, есть ли у пользователя доступ в интернет.

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

Способ 1. ЗапуститьПриложение — универсальный вариант

Метод ЗапуститьПриложение("https://пример.ru") — самый простой и распространённый способ. Платформа передаёт строку операционной системе, и та открывает её ассоциированным приложением. Для адреса, начинающегося с http:// или https://, это будет браузер по умолчанию.

Пример кода для кнопки в форме:

&НаКлиенте

Процедура ОткрытьСайт(Команда)

ЗапуститьПриложение("https://v8.1c.ru");

КонецПроцедуры

Важный нюанс: если передать строку без протокола (например, "v8.1c.ru" или "www.v8.1c.ru"), система может попытаться найти исполняемый файл с таким именем, и ничего не откроется. Всегда добавляйте протокол https:// в начало адреса.

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

Способ 2. НачатьЗапускПриложения — асинхронный вариант для управляемых форм

В управляемых формах платформа рекомендует асинхронные методы. НачатьЗапускПриложения выполняет ту же задачу, но позволяет получить результат: открылось приложение или произошла ошибка. Это удобно, когда нужно сообщить пользователю о неудаче, а не молча «проглотить» проблему.

&НаКлиенте

Процедура ОткрытьСайт(Команда)

Оповещение = Новый ОписаниеОповещения("ПослеЗапускаПриложения", ЭтотОбъект);

НачатьЗапускПриложения(Оповещение, "https://v8.1c.ru");

КонецПроцедуры

&НаКлиенте

Процедура ПослеЗапускаПриложения(КодВозврата, ДополнительныеПараметры) Экспорт

// КодВозврата = 0 — запуск выполнен успешно

КонецПроцедуры

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

Способ 3. ПерейтиПоНавигационнойСсылке — для ссылок внутри базы

Если нужно открыть не внешний сайт, а объект самой информационной базы (документ, элемент справочника, отчёт), используйте ПерейтиПоНавигационнойСсылке. Метод принимает навигационную ссылку вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=... и открывает соответствующую форму.

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

Интересная деталь: ПерейтиПоНавигационнойСсылке умеет работать и с веб-адресами — если передать ему https://-ссылку, платформа откроет её в браузере, как и ЗапуститьПриложение. Это делает метод удобным «единым входом», когда заранее неизвестно, внутренняя ссылка или внешняя.

Сравнение способов

ЗапуститьПриложение

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

НачатьЗапускПриложения

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

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

Для внутренних ссылок на объекты базы; внешние https-ссылки тоже открывает в браузере. Не подходит для запуска файлов и программ.

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

Частый сценарий — реквизит «Сайт» в карточке контрагента или организации. Чтобы пользователь мог кликнуть по значению и перейти на сайт, добавьте кнопку рядом с полем или обработайте событие нажатия. Минимальный вариант — кнопка с командой:

&НаКлиенте

Процедура ОткрытьСайтКонтрагента(Команда)

Адрес = СокрЛП(Объект.Сайт);

Если ПустаяСтрока(Адрес) Тогда

ПоказатьПредупреждение(, "Сайт не заполнен");

Возврат;

КонецЕсли;

Если СтрНайти(Адрес, "://") = 0 Тогда

Адрес = "https://" + Адрес;

КонецЕсли;

НачатьЗапускПриложения(, Адрес);

КонецПроцедуры

Обратите внимание на нормализацию адреса: пользователи часто вводят сайт без протокола, поэтому код сам добавляет https://, если схема не указана. Это простая проверка избавляет от большинства жалоб «ссылка не открывается».

Для декорации-надписи можно включить свойство «Гиперссылка» и обработать событие Нажатие. Внутри обработчика — тот же вызов запуска приложения с нужным адресом. Такой подход удобен для фиксированных ссылок: инструкций, личного кабинета, страницы поддержки.

Открытие ссылок из HTML-поля и форматированного документа

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

&НаКлиенте

Процедура ПолеHTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)

Ссылка = ДанныеСобытия.Href;

Если Не ПустаяСтрока(Ссылка) Тогда

СтандартнаяОбработка = Ложь;

НачатьЗапускПриложения(, Ссылка);

КонецЕсли;

КонецПроцедуры

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

Почему ссылка не открывается: проверка и типичные ошибки

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

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

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

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

Адрес в коде
Норма

Строка начинается с http:// или https://

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

Адрес без протокола — система ищет файл и ничего не открывает

Реакция на клик
Норма

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

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

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

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

Ссылка открывается в новой вкладке

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

Браузер блокирует всплывающее окно — проверьте настройки блокировщика

Права и безопасность
Норма

Запуск выполняется без предупреждений

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

Платформа показывает запрос подтверждения или отклоняет запуск

Типичные ошибки
01
Передача адреса без протокола: ЗапуститьПриложение("site.ru") не откроет браузер, а попытается найти исполняемый файл.
02
Вызов серверного метода на клиенте: запуск приложения возможен только на клиенте, код с директивой &НаСервере завершится ошибкой.
03
Игнорирование пустого значения: без проверки пользователь кликает по пустому реквизиту и получает непонятное поведение.
04
Попытка открыть внутреннюю навигационную ссылку через браузер: ссылка e1cib предназначена для платформы, в браузере она не сработает без специальной обработки.

Открытие ссылки без программирования

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

Если ссылка хранится в текстовом реквизите (например, «Сайт» в карточке контрагента), пользователь может выделить значение, скопировать его (Ctrl+C) и вставить в адресную строку браузера. Это медленнее, чем кнопка, но не требует доработки конфигурации — важно, когда нет прав на изменение кода или конфигурация на поддержке.

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

Как выбрать подходящий способ

Для разовой кнопки в форме достаточно ЗапуститьПриложение с проверкой и нормализацией адреса. Для новых управляемых форм и веб-клиента берите НачатьЗапускПриложения — он соответствует рекомендациям платформы и даёт контроль над результатом.

Для переходов внутри базы используйте только навигационные ссылки и ПерейтиПоНавигационнойСсылке. А если ссылок много и они хранятся в данных, добавьте единую процедуру открытия с проверкой протокола — это закроет и вопрос безопасности, и большинство ошибок ввода.

Итог

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

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

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

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

Да, но для этого придётся запускать сам исполняемый файл браузера с адресом в параметрах, например указать путь к chrome.exe и передать ссылку аргументом. Такой способ привязан к конкретному компьютеру и путям установки, поэтому в типовых решениях его избегают: надёжнее открывать ссылку в браузере по умолчанию.

Почему ЗапуститьПриложение выдаёт ошибку «Метод недоступен»?

Скорее всего, вызов выполняется на сервере. Запуск приложений возможен только в клиентском контексте — в процедурах с директивой &НаКлиенте. Перенесите вызов в клиентский обработчик, а данные для ссылки при необходимости получите с сервера заранее.

Как открыть ссылку в веб-клиенте, если браузер блокирует всплывающие окна?

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

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

Напрямую — нет: схему e1cib понимает только платформа 1С. Но если база опубликована на веб-сервере, можно сформировать веб-ссылку вида https://сервер/база/#e1cib/... — тогда браузер откроет веб-клиент сразу на нужном объекте. Получить такую ссылку можно через «Получить ссылку» при работе в веб-клиенте.

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

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

Безопасно ли открывать ссылки, которые присылают контрагенты в письмах?

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