Как программно открыть интернет-ссылку в 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

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

Рассмотрим, почему этот метод считается «best practice». В отличие от прямых вызовов операционной системы, этот метод корректно обрабатывается платформой как в тонком клиенте, так и в веб-клиенте (браузере). При использовании в веб-клиенте платформа сама заботится о том, чтобы команда была понятна браузеру, что минимизирует риск возникновения ошибок прав доступа или блокировок.

Пример реализации на управляемой форме:


&НаКлиенте
Процедура ОткрытьСсылкуНаСайте(Команда)
    АдресСайта = "https://1c.ru"; // Здесь может быть переменная из реквизита формы
    ПерейтиПоНавигационнойСсылке(АдресСайта);
КонецПроцедуры

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

Способ 2. Использование метода ЗапуститьПриложение

Этот метод является классическим и позволяет вызвать любое системное приложение, зарегистрированное в операционной системе для обработки конкретного типа файлов или протоколов. В нашем случае, передавая строку, начинающуюся с http или https, мы просим Windows (или другую ОС) открыть браузер по умолчанию.

Разберем пример кода для кнопки на форме:


&НаКлиенте
Процедура ПриНажатииКнопкиОткрыть(Команда)
    СсылкаДляОткрытия = "https://google.com";
    ЗапуститьПриложение(СсылкаДляОткрытия);
КонецПроцедуры

Важно помнить о защите! Начиная с версии платформы 8.3.9, в 1С реализован механизм «Защиты от опасных действий». При попытке выполнить команду ЗапуститьПриложение пользователь может увидеть предупреждение системы безопасности. Чтобы избежать этого при работе с доверенными ресурсами, администратору системы необходимо настроить профили безопасности или добавить адрес в список исключений.

Особенности работы в веб-клиенте: Как отмечалось в обсуждении, метод ЗапуститьПриложение в веб-клиенте или в облачном сервисе 1С:Фреш может работать нестабильно или вызывать исключение «Непредвиденная ошибка». Это происходит из-за того, что браузер блокирует попытку приложения запустить еще один процесс. Именно поэтому для облачных решений всегда следует отдавать предпочтение первому способу (навигационным ссылкам).

Способ 3. Встроенное Поле HTML-документа

Иногда требуется не просто открыть сайт в отдельном окне браузера, а отобразить его содержимое прямо внутри формы 1С. Для этого мы можем использовать реквизит формы с типом Строка и видом Поле HTML документа.

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


&НаКлиенте
Процедура ЗагрузитьСайтВФорму()
    Адрес = "https://v8.1c.ru";
    // В управляемых формах достаточно присвоить адрес реквизиту, 
    // связанному с полем HTML документа.
    Объект.РеквизитПолеHTML = Адрес; 
КонецПроцедуры

В обычных формах (старые версии 1С) использовался метод Перейти(), как показано в примере ниже:


Попытка
    ЭлементыФормы.ПолеHTMLДокумента1.Перейти(СтартоваяСтраница);
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;

Важное замечание по движку отображения: В старых версиях 1С встроенное поле HTML использовало движок Internet Explorer, что приводило к проблемам с отображением современных сайтов и выполнением JavaScript. В актуальных версиях платформы (8.3.14+) в свойствах конфигурации можно выбрать режим использования Chromium. Это позволяет корректно отображать даже самые сложные веб-интерфейсы прямо внутри 1С.

Способ 4. Библиотека стандартных подсистем (БСП)

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

Пример использования метода БСП:


// Использование стандартной функции БСП для открытия ссылки
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://1c-dn.com");

Преимущество этого метода в том, что разработчики БСП уже предусмотрели все проверки, что делает ваш код более надежным (как и при проверке орфографии через API без изменения элементов формы). Для реализации такой проверки подойдёт решение для проверки орфографии в текстовых полях через API Яндекс.Спеллер.

Сценарии для мобильного клиента

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

Платформа 1С на мобильном устройстве сама определит, какое приложение должно обработать этот запрос (будь то звонок или авторизация в RuStore на мобильном приложении), и предложит пользователю соответствующее действие.

Проблема блокировки всплывающих окон

Проанализируем ситуацию, когда код написан верно, но в веб-клиенте ничего не происходит. Часто это связано с настройками безопасности самого браузера (Chrome, Firefox, Safari). Браузеры блокируют программное открытие новых вкладок, если они не инициированы прямым физическим кликом пользователя по ссылке.

Чтобы решить эту проблему, пользователю необходимо один раз разрешить всплывающие окна для адреса вашего сервера 1С в настройках браузера (обычно в адресной строке появляется значок перечеркнутого окна).

Резюме по выбору метода

Подведем итоги нашего анализа:

  1. Для управляемых форм и кроссплатформенности (включая веб-клиент) используйте ПерейтиПоНавигационнойСсылке().
  2. Если используется БСП, вызывайте ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку().
  3. Для старых обычных форм или специфических системных вызовов используйте ЗапуститьПриложение().
  4. Для интеграции интерфейса сайта внутрь 1С применяйте Поле HTML документа с включенным режимом Chromium.

Используя эти подходы, вы обеспечите стабильную работу приложения и удобство для пользователей при взаимодействии с внешними интернет-ресурсами.

← На главную