При работе с управляемыми формами в системе 1С:Предприятие 8.3 часто возникает необходимость предоставить пользователям возможность быстрого перехода по внешним веб-ссылкам, например, на страницы товаров в интернет-магазинах (поможет готовая интеграция 1С с популярными маркетплейсами), внешние информационные ресурсы или справочные материалы. В обычных формах для этих целей традиционно использовалась функция ВыполнитьКоманду(). Однако, как мы выяснили, в управляемых формах на стороне клиента этот метод недоступен, что ставит перед разработчиками вопрос о поиске альтернативных решений.
Давайте подробно рассмотрим, как правильно реализовать открытие гиперссылок в браузере из управляемых форм 1С, учитывая, что современные веб-технологии позволяют создавать даже локальные генераторы PWA приложений на базе ИИ.
Одним из наиболее предпочтительных и простых способов открытия внешних веб-ссылок является использование встроенной клиентской функции ОткрытьURL(). Эта функция специально разработана для открытия указанного URL-адреса в браузере по умолчанию пользователя. Её простота и прямое назначение делают её идеальным выбором для большинства сценариев.
Разберем ее применение на конкретных примерах.
Если нам нужно открыть фиксированный URL-адрес, например, ссылку на корпоративный сайт или аналог Postman на платформе 1С, код будет максимально простым.
&НаКлиенте
Процедура ОткрытьExampleCom(Команда)
ОткрытьURL("https://www.example.com");
КонецПроцедуры
В этом примере при вызове процедуры ОткрытьExampleCom система 1С попросит операционную систему или браузер открыть указанный URL. Это позволяет быстро направить пользователя на необходимый ресурс без лишних действий.
На практике часто требуется формировать URL динамически, например, исходя из данных, введенных пользователем на форме или хранящихся в базе. Представим, что у нас есть поле ввода ПолеПоиска, и мы хотим использовать его содержимое для формирования поискового запроса на некотором сайте — для этого подойдёт автозапуск поисковых запросов в Chrome из 1С.
&НаКлиенте
Процедура ОткрытьСайтСПараметрами(Команда)
URLАдрес = "https://www.example.com/search?q=" + Элементы.ПолеПоиска.Текст;
ОткрытьURL(URLАдрес);
КонецПроцедуры
В данном случае, мы конструируем полный URL-адрес, добавляя к базовому адресу поискового запроса текст из поля формы. Критически важно при формировании URL из пользовательских данных убедиться в их корректном кодировании, чтобы избежать ошибок и потенциальных проблем с безопасностью. Например, пробелы и специальные символы в запросах должны быть заменены на соответствующие URL-кодировки (например, %20 для пробела), хотя функция ОткрытьURL() в большинстве случаев достаточно умна, чтобы справиться с базовыми сценариями.
Использование ОткрытьURL() значительно упрощает доступ к внешней информации и повышает эффективность работы, избавляя пользователей от необходимости копировать и вставлять URL-адреса в браузер вручную.
Помимо ОткрытьURL(), существуют и другие методы, которые могут быть использованы для открытия гиперссылок, хотя они имеют свои особенности и предназначены для более широкого круга задач. Рассмотрим их подробнее.
Функция ЗапуститьПриложение() является более универсальным инструментом, предназначенным для запуска любых внешних приложений или открытия файлов, ассоциированных с ними. В контексте открытия веб-ссылок она работает, делегируя задачу операционной системе, которая, в свою очередь, открывает URL через браузер по умолчанию. Изначально автор темы на форуме нашел решение именно с использованием этой функции:
&НаКлиенте
Процедура АртикулWBОткрытие (Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = ЛОЖЬ;
ЗапуститьПриложение("https://www.wildberries.ru/catalog/"+Объект.KMS_АртикулWB+"/detail.aspx?targetUrl=SP");
КонецПроцедуры
В этом примере мы видим, как динамически формируется URL для Wildberries с использованием артикула товара из объекта 1С, а затем этот URL передается в ЗапуститьПриложение() — для этого есть модуль для автоматизации работы с Wildberries. Параметр СтандартнаяОбработка = ЛОЖЬ; здесь используется для того, чтобы отменить стандартное действие элемента формы, если оно определено (например, открытие формы редактирования объекта при клике на поле).
Нюансы использования ЗапуститьПриложение():
ЗапуститьПриложение() для открытия веб-ссылок может потребовать установки специального расширения для работы с файлами в браузере. Это не всегда удобно, особенно для большого количества пользователей, использующих разные браузеры. Без такого расширения функция может не работать или требовать дополнительных подтверждений.
НачатьЗапускПриложения(), который позволяет продолжить выполнение кода 1С, не дожидаясь закрытия внешнего приложения.
Метод ПерейтиПоНавигационнойСсылке() в основном предназначен для перехода по навигационным ссылкам внутри самой системы 1С. Эти ссылки используются для быстрого открытия определенных объектов информационной базы (документов, справочников, отчетов) как в тонком, так и в веб-клиенте. Однако, как было отмечено в теме форума, он также способен открывать внешние URL-адреса.
&НаКлиенте
Процедура ОткрытьСсылкуФорума(Команда)
ПерейтиПоНавигационнойСсылке("https://forum.mista.ru/");
КонецПроцедуры
В этом примере ПерейтиПоНавигационнойСсылке() используется для открытия внешней веб-страницы. В данном контексте её поведение может быть схожим с ОткрытьURL().
Отличия ПерейтиПоНавигационнойСсыске() от других методов при работе с внешними URL:
ПерейтиПоНавигационнойСсылке(), как и ОткрытьURL(), обычно открывает их в браузере. Одним из потенциальных отличий от ЗапуститьПриложение() является то, что он может открывать новую вкладку в уже запущенном браузере, а не новое окно приложения браузера. Однако это поведение может зависеть от настроек браузера и операционной системы.
ОткрытьURL() для открытия внешних веб-ссылок, так как это её прямое и основное назначение. ПерейтиПоНавигационнойСсылке() лучше резервировать для внутренних навигационных ссылок 1С, где она проявляет свои преимущества в работе с объектами системы.
Для создания более интуитивно понятного интерфейса в управляемых формах 1С можно настроить поле формы таким образом, чтобы оно выглядело и функционировало как гиперссылка, без необходимости добавлять отдельную кнопку — для этого подойдёт конструктор рабочих столов и ссылок в 1С. Мы можем привязать это поле к данным, содержащим URL, или использовать его как статический элемент для перехода.
Разберем шаги по настройке такого элемента:
ОткрытьURL(), ЗапуститьПриложение() или ПерейтиПоНавигационнойСсылке()) для выполнения перехода по нужному адресу.
Пример кода для обработчика нажатия:
&НаКлиенте
Процедура МоеПолеГиперссылкаНажатие(Элемент)
// Предположим, что URL хранится в реквизите формы или объекта
// Если URL статический, можно передать его напрямую:
// ОткрытьURL("https://мойсайт.ру/инфо");
// Если URL динамический, например, из реквизита формы:
Если Не ЗначениеЗаполнено(МойРеквизитСURL) Тогда
ПоказатьПредупреждение(,"Не указан адрес для перехода.");
Возврат;
КонецЕсли;
ОткрытьURL(МойРеквизитСURL);
КонецПроцедуры
Этот подход создает интерактивные элементы, которые выглядят как обычные гиперссылки, что значительно улучшает пользовательский опыт и делает интерфейс более интуитивно понятным.
При формировании строк для запуска внешних программ или перехода по ссылкам, особенно если части этой строки формируются из пользовательских данных (поля ввода, данные из базы), необходимо уделять повышенное внимание безопасности. Злоумышленники могут попытаться внедрить вредоносные команды или манипулировать поведением системы, используя специальные символы. Мы должны тщательно проверять строковые данные на наличие потенциально опасных символов, таких как $, `, |, ||, ;, &, &&. Эти символы могут быть использованы для инъекций команд, которые могут привести к нежелательным действиям, выполнению сторонних скриптов или открытию вредоносных ресурсов. Рекомендуется использовать функции для кодирования URL-параметров или выполнять строгую валидацию входных данных, чтобы минимизировать риски.
Помимо открытия внешних веб-ссылок из 1С, мы можем формировать и использовать навигационные ссылки на объекты самой 1С (например, на документы, элементы справочников, отчеты) — для этой задачи есть формирование внешних ссылок на документы 1С. Эти ссылки могут быть переданы по почте или сохранены, позволяя пользователям быстро открывать нужные объекты в тонком или веб-клиенте 1С. Для этого может потребоваться настройка публикации информационной базы и, в некоторых случаях, регистрация схемы e1c:// в операционной системе, чтобы ссылки автоматически открывались в установленном клиенте 1С. Это мощный механизм для интеграции 1С с другими системами и повышения удобства работы пользователей.
Для корректной работы веб-клиента 1С и беспроблемного открытия ссылок из него важно, чтобы браузер был правильно настроен. Мы рекомендуем пользователям убедиться, что следующие параметры браузера настроены оптимально:
ЗапуститьПриложение() в веб-клиенте может потребоваться установка специального расширения.
Внимательная настройка браузера, включая корректное управление WebSocket-соединениями, обеспечит стабильную работу с веб-клиентом 1С и всеми его функциями.