В процессе разработки в среде 1С:Предприятие часто возникает необходимость взаимодействия с внешними веб-ресурсами. Одной из типичных проблем является некорректное отображение современных сайтов во встроенных механизмах платформы, которые исторически использовали движок Internet Explorer. Рассмотрим ситуацию, когда сайт корректно работает только в Google Chrome, и нам необходимо программно вызвать этот браузер, передав ему адрес нужной страницы. Разберем по шагам все способы решения — от самых простых до профессиональных методов с использованием системного реестра и встроенного Chromium.
Проанализируем самый простой вариант. Если в операционной системе Windows в качестве основного браузера уже выбран Google Chrome, нам не нужно знать путь к исполняемому файлу или использовать специфические команды. Платформа 1С умеет открывать файлы и ссылки через ассоциации приложений. Выясним, как это работает на практике.
Для открытия ссылки достаточно передать сам URL-адрес в процедуру ЗапуститьПриложение. В этом случае система сама определит программу, предназначенную для обработки протокола "https" (а расширить возможности веб-клиента поможет специальное расширение для Chrome).
// Самый простой способ запуска
АдресСайта = "https://google.com";
ЗапуститьПриложение(АдресСайта);
Этот метод является предпочтительным, так как он максимально универсален и не зависит от того, где установлен браузер. Однако у него есть существенный минус: если у пользователя по умолчанию стоит другой браузер (например, Edge или Яндекс.Браузер), страница откроется именно в нем, что не решает нашу задачу, если сайт требует строго Google Chrome.
Рассмотрим ситуацию, когда нам нужно принудительно запустить именно Chrome. Для этого нам необходимо вызвать исполняемый файл chrome.exe и передать ему адрес сайта в качестве параметра командной строки. Посмотрим на пример кода, который часто вызывает затруднения у начинающих разработчиков из-за правил расстановки пробелов и кавычек.
Основная проблема здесь заключается в том, что путь к браузеру обычно содержит пробелы (например, в названии папки "Program Files"). Если просто написать путь без кавычек, система не сможет найти файл. Выясним, как правильно сформировать строку запуска.
// Пример запуска с полным путем и кавычками
ПутьКБраузеру = """C:\Program Files\Google\Chrome\Application\chrome.exe""";
АдресСайта = """https://google.com""";
ЗапуститьПриложение(ПутьКБраузеру + " " + АдресСайта);
Обратите внимание на использование тройных кавычек в коде 1С. Разберем, почему это важно: внешние кавычки определяют начало и конец строки в конфигураторе, а удвоенные внутренние кавычки позволяют вставить один символ двойной кавычки непосредственно в саму строку. Это необходимо, чтобы Windows получила команду вида "C:\Path\chrome.exe" "https://url.com".
Проанализируем ситуацию более глубоко. Прописывать жесткий путь (hardcode) — это плохая практика, так как Chrome может быть установлен в C:\Program Files (x86), в C:\Program Files или даже в профиль пользователя %LocalAppData%. Чтобы программа работала у любого пользователя, мы должны научить 1С находить Chrome самостоятельно. Для этого обратимся к системному реестру Windows.
Актуальный путь к браузеру всегда хранится в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe. Напишем функцию, которая будет получать этот путь автоматически.
Функция ПолучитьПутьКChrome()
Попытка
Шелл = Новый COMОбъект("WScript.Shell");
Путь = Шелл.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe\");
Возврат Путь;
Исключение
Возврат ""; // Chrome не установлен
КонецПопытки;
КонецФункции
// Использование функции
Путь = ПолучитьПутьКChrome();
Если ЗначениеЗаполнено(Путь) Тогда
ЗапуститьПриложение("""" + Путь + """ ""https://google.com""");
Иначе
Сообщить("Браузер Google Chrome не найден в системе!");
КонецЕсли;
Используя объект WScript.Shell, мы делаем наше решение профессиональным и устойчивым к изменениям в настройках конкретного компьютера. Это гарантирует, что 1С найдет браузер, где бы он ни находился.
Иногда просто открыть страницу недостаточно. Рассмотрим полезные флаги командной строки Chrome, которые могут пригодиться в работе. Например, если нам нужно, чтобы пользователь зашел на сайт "с чистого листа", без использования старых куки и сессий, можно использовать режим инкогнито.
Популярные параметры:
--incognito — запуск в режиме инкогнито.--new-window — принудительное открытие в новом окне, а не новой вкладке.--app="URL" — запуск сайта в режиме приложения (без адресной строки и вкладок), что выглядит очень эстетично при интеграции с 1С.Посмотрим на пример использования режима приложения:
// Запуск сайта как отдельного окна приложения
ПутьКChrome = "C:\Program Files\Google\Chrome\Application\chrome.exe";
АдресСайта = "https://google.com";
Команда = """" + ПутьКChrome + """ --app=""" + АдресСайта + """";
ЗапуститьПриложение(Команда);
Такой подход позволяет пользователю воспринимать открывшуюся страницу как часть интерфейса системы, не отвлекаясь на элементы управления браузера.
Разберем еще один важный момент. Если ваша задача — не просто "выбросить" пользователя в браузер, а показать содержимое сайта прямо в форме 1С, вам не обязательно запускать внешнее приложение. Начиная с версии платформы 8.3.14, 1С поддерживает использование движка Chromium для элемента формы Поле HTML документа.
Чтобы сайт отображался корректно внутри 1С, выполним следующие шаги:
// Программная установка режима использования встроенного браузера
УстановитьРежимИспользованияВстроенногоБраузера(РежимИспользованияВстроенногоБраузера.Chromium);
После этой настройки стандартное ПолеHTMLДокумента начнет работать на движке Chromium, и потребность в запуске внешнего Chrome может отпасть сама собой, так как сайт будет отображаться идеально внутри вашей формы.
Мы проанализировали различные подходы к запуску Google Chrome из 1С. Подведем итоги:
ЗапуститьПриложение(URL).chrome.exe из реестра Windows через WScript.Shell.--app, для создания бесшовного интерфейса.Выбор конкретного метода зависит от ваших бизнес-задач и версии используемой платформы 1С. Комбинируя эти знания, вы сможете настроить стабильное взаимодействие 1С с любыми современными веб-сервисами.