Как программно управлять браузером из 1С для автоматизации веб-задач?

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

Многие разработчики 1С сталкиваются с необходимостью автоматизации действий на сторонних веб-ресурсах, которые не предоставляют открытого API. Использование простых HTTP-запросов часто оказывается недостаточным, так как современные сайты активно используют динамическую подгрузку контента через JavaScript и сложные системы защиты. В данном руководстве мы разберем, как реализовать программное управление браузером, используя мощь Selenium в связке с платформой 1С.

Почему стандартных средств 1С недостаточно?

При попытке парсинга сложных сайтов мы часто получаем «пустую болванку» HTML-кода, так как данные загружаются асинхронно через AJAX-запросы уже после инициализации страницы. Кроме того, современные ресурсы (например, системы защиты вроде Cloudflare или DDOS-Guard) требуют выполнения JS-кода для генерации ключей доступа. Обычные HTTPСоединение или WinHTTP эти задачи решить не могут. Именно здесь на помощь приходит полноценная эмуляция браузера.

Решение: интеграция Selenium через .NET-сборки

Для управления браузером из 1С наиболее надежным методом является использование Selenium WebDriver через библиотеки .NET. Поскольку 1С позволяет взаимодействовать с .NET-объектами, мы можем создать связующее звено между платформой и браузером.

Рассмотрим пошагово, как организовать эту работу:

  1. Подготовьте .NET-библиотеку (или используйте готовую внешнюю компоненту), которая умеет загружать Selenium.WebDriver.
  2. Инициализируйте драйвер (например, ChromeDriver) внутри управляющего класса.
  3. Передавайте команды из 1С в ваш управляющий код, который будет транслировать их в методы WebDriver.

Пример инициализации драйвера внутри C#-кода, который может быть вызван из 1С:


public void Initialization_Bot(String Path_PJS)
{
    try
    {
        if (Path_PJS == \"ChromeDriver\")
        {
            PJS = new ChromeDriver();
        }
        else
        {
            PJS = new PhantomJSDriver();
        }                
    }
    catch (Exception e)
    {
        // Логирование ошибок через внешние события 1С
        asyncEvent.ExternalEvent(\"BotNET\", \"error\", e.ToString());
    }
}

Как работать с динамическим DOM-деревом

Одной из главных проблем при автоматизации является получение актуального содержимого страницы после того, как JavaScript отработал все свои сценарии. Стандартное получение PageSource часто возвращает исходный код, а не модифицированный. Чтобы получить состояние страницы после выполнения всех скриптов, используйте выполнение JS-кода через драйвер:


var pageSource = (string)driver.ExecuteScript(\"return document.body.outerHTML\");

Этот метод позволяет забрать «живой» HTML, содержащий все сгенерированные данные, которые вы затем можете анализировать средствами 1С или регулярными выражениями.

Организация архитектуры решения

Не пытайтесь реализовывать логику браузера напрямую в коде 1С. Лучшим подходом будет:

Важные рекомендации

Помните о следующих нюансах при внедрении:

Таким образом, автоматизация через Selenium — это мощный инструмент для решения задач, которые раньше казались невозможными средствами 1С. Главное — выносить сложную логику за пределы платформы, оставляя 1С роль «дирижера» процесса.

← На главную