Разберем задачу автоматизации получения данных, когда на веб-странице есть ссылка на XML-файл, но мы хотим избежать трудоемкого процесса парсинга всего HTML-кода страницы. Наша цель — получить прямой доступ к данным XML для последующей обработки в 1С.
Прежде чем приступать к написанию кода для анализа HTML-документа, проанализируем, как именно сайт отдает данные. Часто разработчики пытаются имитировать поведение пользователя: открыть страницу, найти нужную ссылку, кликнуть по ней. Однако это избыточно и ненадежно, так как изменения в верстке страницы приведут к поломке кода.
Рассмотрим шаги для анализа:
XML-файла.Если путь к файлу фиксирован, мы можем обращаться к нему напрямую через HTTPСоединение. Это позволит нам получить файл сразу, минуя лишние операции.
Разберем пример реализации прямого получения файла. Для этих целей лучше всего использовать стандартные объекты HTTPСоединение и HTTPЗапрос. Они обеспечивают стабильную работу с протоколами передачи данных.
Посмотрим на пример кода, который позволяет скачать файл по прямой ссылке:
// Определяем параметры соединения
Сервер = "валюты.сайт.ру";
ПутьКФайлу = "/files/rates.xml";
// Создаем соединение
Соединение = Новый HTTPСоединение(Сервер, 443, , , Новый ЗащищенноеСоединениеOpenSSL());
// Формируем запрос
Запрос = Новый HTTPЗапрос(ПутьКФайлу);
// Выполняем запрос и сохраняем ответ в файл
Ответ = Соединение.Получить(Запрос, "C:\Temp\rates.xml");
Если Ответ.КодСостояния = 200 Тогда
// Далее работаем с полученным файлом
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\Temp\rates.xml");
// Обработка XML...
КонецЕсли;
Если адрес файла меняется, например, в нем зашифрована текущая дата, нам все же придется получить этот адрес из HTML. В этом случае не используйте регулярные выражения, так как они крайне уязвимы к смене структуры верстки сайта.
Рекомендуемые подходы:
MSXML2.DOMDocument. Этот объект позволяет загрузить HTML-страницу и искать элементы по тегам, классам или ID. Это стандартный способ работы с DOM-структурой документа в 1С.WinHttp.WinHttpRequest.5.1, если требуется более гибкая работа с заголовками HTTP-запроса, что актуально для современных сайтов с защитой TLS.Чтобы система была максимально устойчивой, проанализируем ситуацию комплексно. Если сайт часто обновляет структуру, а логика получения данных усложняется, самым правильным решением будет вынос парсинга за пределы конфигурации 1С.
Разберем вариант с использованием промежуточного скрипта:
Python или PHP, который будет запускаться по расписанию через планировщик задач операционной системы.XML и сохранять его в общую папку или передавать в 1С через HTTP-сервис.Таким образом, мы рассмотрели несколько стратегий: от прямого HTTP-запроса, который является предпочтительным, до работы с DOM-моделью и использования внешних скриптов для сложных случаев. Выбирайте тот метод, который соответствует текущим задачам и архитектуре вашей информационной системы.