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

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

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

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

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

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

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

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

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

&НаКлиенте

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

ПерейтиПоНавигационнойСсылке("https://example.com/page");

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

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

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

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

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

Классический вариант — передать URL в ЗапуститьПриложение(). Операционная система распознает протокол и откроет адрес в браузере по умолчанию. Метод доступен только на клиенте и требует, чтобы в конфигурации был разрешён модальный режим, что в современных решениях встречается редко.

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

&НаКлиенте

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

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

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

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

&НаКлиенте

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

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

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

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

Способ 3. Гиперссылки в элементах формы

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

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

Для динамических данных удобно хранить URL в реквизите объекта (например, «Сайт» у контрагента) и открывать его кнопкой формы. Перед открытием проверяйте, что поле заполнено и начинается с корректного протокола, иначе пользователь получит пустую вкладку или ошибку.

Открытие страницы из обычных форм и из веб-клиента

В обычных формах (режим обычного приложения) доступны те же методы: ЗапуститьПриложение("https://...") работает без ограничений, так как там нет запрета модальности. Дополнительно можно использовать объект Shell.Application через COM, но это лишняя зависимость без реальных преимуществ.

В веб-клиенте ЗапуститьПриложение() с URL может быть заблокирован настройками безопасности браузера или не поддерживаться, поэтому единственный надёжный способ — ПерейтиПоНавигационнойСсылке(). Учитывайте это, если решение должно работать в обоих клиентах.

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

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

Работает в тонком и веб-клиенте, не требует модальности. Подходит почти всегда.

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

Только толстый/тонкий клиент, зато можно задать конкретную программу и параметры командной строки.

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

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

Гиперссылка в форме

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

Формирование и проверка URL перед открытием

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

Для кодирования используйте КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL). Без этого кириллица, пробелы и символы & в значениях параметров разорвут строку запроса, и внешний сервис получит обрезанные данные.

Если адрес хранится в базе и его вводят пользователи, нормализуйте значение: обрежьте пробелы по краям и добавьте https://, если протокол отсутствует. Это избавит от ситуации, когда платформа пытается открыть «www.site.ru» как локальный файл.

Порядок действий для надёжного открытия ссылки
  1. 1
    Получите или сформируйте строку адреса
  2. 2
    Убедитесь, что адрес начинается с http:// или https://, при необходимости добавьте протокол
  3. 3
    Закодируйте параметры запроса через КодироватьСтроку
  4. 4
    В клиентской процедуре вызовите ПерейтиПоНавигационнойСсылке с итоговым адресом
  5. 5
    Проверьте результат в тонком и веб-клиенте: открылась ли нужная страница

Типичные ошибки и их устранение

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

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

Третья ошибка — передача в ЗапуститьПриложение() адреса без протокола. Windows пытается найти исполняемый файл с таким именем и выдаёт ошибку «файл не найден». Всегда добавляйте https:// перед доменом.

Типичные ошибки
01
Вызов из серверного контекста — метод недоступен, страница не открывается. Выносите код в клиентскую процедуру.
02
Адрес без протокола — система ищет файл вместо открытия сайта. Добавляйте https://.
03
Некодированные параметры — кириллица и пробелы ломают строку запроса. Используйте КодироватьСтроку.
04
Синхронный ЗапуститьПриложение при запрещённой модальности — вызов запрещён. Переходите на НачатьЗапускПриложения или ПерейтиПоНавигационнойСсылке.

Проверка результата

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

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

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

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

Открытие в тонком клиенте
Норма

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

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

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

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

Открывается новая вкладка с корректным адресом

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

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

Адрес с параметрами
Норма

Внешний сервис получает все параметры целиком

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

Строка обрезается на пробеле или амперсанде

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

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

Да, через НачатьЗапускПриложения: первым параметром укажите путь к исполняемому файлу браузера, вторым — URL в строке параметров. Учтите, что путь различается на компьютерах пользователей, поэтому его лучше хранить в настройках, а не зашивать в код.

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

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

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

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

Можно ли открыть локальный файл или сетевой ресурс так же, как веб-страницу?

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

Работает ли открытие страницы в мобильном клиенте 1С?

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

Как передать в открываемую страницу данные из документа, например номер заказа?

Сформируйте URL с параметрами запроса: подставьте значения в строку адреса, предварительно закодировав каждое через КодироватьСтроку. Например, "https://site.ru/order?id=" + КодироватьСтроку(НомерЗаказа, СпособКодированияСтроки.КодировкаURL).

Итог

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

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