Разработка и Конфигурация · 10 мин
Как из 1С открыть страницу в браузере
Как из 1С открыть страницу в браузере: ЗапуститьПриложение, ПерейтиПоНавигационнойСсылке, открытие из формы и из кода. Примеры, ошибки и проверка результата.
Открыть веб-страницу из 1С требуется часто: перейти на сайт контрагента, показать инструкцию, отправить пользователя в личный кабинет сервиса или открыть ссылку на оплату. Во встроенном языке платформы есть несколько штатных способов сделать это, и выбор зависит от режима работы — тонкий клиент, веб-клиент, управляемые или обычные формы.
Основных подхода три: метод ЗапуститьПриложение() (или его асинхронный вариант НачатьЗапускПриложения()), метод глобального контекста ПерейтиПоНавигационнойСсылке() и гиперссылки в полях формы. Все они в итоге заставляют операционную систему открыть URL в браузере по умолчанию, но отличаются требованиями к контексту и поведением в веб-клиенте.
Критичный момент — модальность и асинхронность. В современных конфигурациях с отказом от модальных вызовов синхронный ЗапуститьПриложение() может быть запрещён настройками, а на сервере открыть браузер пользователя в принципе невозможно. Ниже разобраны рабочие варианты с готовым кодом и типичными ошибками.
Способ 1. ПерейтиПоНавигационнойСсылке — универсальный метод
Метод ПерейтиПоНавигационнойСсылке() глобального контекста предназначен для перехода по навигационным ссылкам, но корректно обрабатывает и обычные интернет-адреса, начинающиеся с http:// или https://. Это самый простой и безопасный вариант для управляемых форм.
&НаКлиенте
Процедура ОткрытьСайт(Команда)
ПерейтиПоНавигационнойСсылке("https://example.com/page");
КонецПроцедуры
Метод работает в тонком клиенте и в веб-клиенте: в первом случае откроется браузер по умолчанию, во втором — новая вкладка текущего браузера. Никаких дополнительных разрешений не требуется, режим модальности не мешает вызову.
Ссылку можно собирать динамически, подставляя параметры. При этом спецсимволы в значениях параметров нужно кодировать, иначе адрес «сломается» на пробеле или амперсанде.
&НаКлиенте
Процедура ОткрытьПоиск(Команда)
Запрос = КодироватьСтроку(ТекстПоиска, СпособКодированияСтроки.Кодировка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Получите или сформируйте строку адреса
- 2Убедитесь, что адрес начинается с http:// или https://, при необходимости добавьте протокол
- 3Закодируйте параметры запроса через КодироватьСтроку
- 4В клиентской процедуре вызовите ПерейтиПоНавигационнойСсылке с итоговым адресом
- 5Проверьте результат в тонком и веб-клиенте: открылась ли нужная страница
Типичные ошибки и их устранение
Самая распространённая ошибка — попытка вызвать метод на сервере. Симптом: метод недоступен или ничего не происходит. Решение — перенести вызов в процедуру с директивой &НаКлиенте, а данные, подготовленные на сервере, вернуть через структуру.
Вторая типичная ситуация — в веб-клиенте браузер блокирует всплывающее окно, и новая вкладка не открывается. Пользователю нужно разрешить всплывающие окна для адреса сервера 1С, либо открывать ссылку по явному клику на кнопку, а не автоматически.
Третья ошибка — передача в ЗапуститьПриложение() адреса без протокола. Windows пытается найти исполняемый файл с таким именем и выдаёт ошибку «файл не найден». Всегда добавляйте https:// перед доменом.
Проверка результата
После внедрения проверьте сценарий во всех режимах, в которых работают пользователи. Открытие в тонком клиенте должно запускать браузер по умолчанию с нужной страницей, в веб-клиенте — новую вкладку без предупреждений о блокировке.
Дополнительно убедитесь, что код не ломается на граничных данных: пустой адрес, адрес с кириллицей, адрес с несколькими параметрами. Для пустого значения выводите понятное предупреждение вместо попытки открытия.
Как проверить результат
Запускается браузер по умолчанию с нужной страницей
Ничего не происходит или появляется ошибка запуска
Открывается новая вкладка с корректным адресом
Браузер блокирует всплывающее окно
Внешний сервис получает все параметры целиком
Строка обрезается на пробеле или амперсанде
Частые вопросы
Можно ли открыть страницу из 1С в конкретном браузере, а не в браузере по умолчанию?
Да, через НачатьЗапускПриложения: первым параметром укажите путь к исполняемому файлу браузера, вторым — URL в строке параметров. Учтите, что путь различается на компьютерах пользователей, поэтому его лучше хранить в настройках, а не зашивать в код.
Почему ПерейтиПоНавигационнойСсылке ничего не открывает?
Чаще всего вызов расположен в серверном контексте, где метод недоступен, либо адрес не начинается с протокола http/https. Проверьте директиву компиляции процедуры и вид адресной строки перед вызовом.
Как открыть ссылку автоматически при открытии формы?
Поместите вызов ПерейтиПоНавигационнойСсылке в обработчик ПриОткрытии на клиенте. В веб-клиенте браузер может заблокировать такой автоматический переход как всплывающее окно — надёжнее показать пользователю кнопку или гиперссылку.
Можно ли открыть локальный файл или сетевой ресурс так же, как веб-страницу?
Да, ЗапуститьПриложение и НачатьЗапускПриложения открывают и пути к файлам — документ откроется в ассоциированной программе. Для файлов используйте полный путь, а для сетевых ресурсов — UNC-формат \\сервер\папка\файл.
Работает ли открытие страницы в мобильном клиенте 1С?
ПерейтиПоНавигационнойСсылке поддерживается в мобильном клиенте и открывает адрес в системном браузере устройства. Запуск произвольных приложений на мобильной платформе ограничен возможностями ОС, поэтому для URL используйте именно этот метод.
Как передать в открываемую страницу данные из документа, например номер заказа?
Сформируйте URL с параметрами запроса: подставьте значения в строку адреса, предварительно закодировав каждое через КодироватьСтроку. Например, "https://site.ru/order?id=" + КодироватьСтроку(НомерЗаказа, СпособКодированияСтроки.КодировкаURL).
Что важно запомнить
Для открытия веб-страницы из 1С используйте ПерейтиПоНавигационнойСсылке — это универсальный метод для тонкого, веб- и мобильного клиента. Вызывайте его только на клиенте, добавляйте протокол к адресу и кодируйте параметры запроса. ЗапуститьПриложение оставьте для случаев, когда нужен конкретный браузер или локальный файл.