При интеграции 1С с современными веб-сервисами, особенно государственными системами или высоконагруженными API, разработчики часто сталкиваются с тем, что стандартные объекты HTTPСоединение и HTTPЗапрос платформы 1С:Предприятие работают исключительно по протоколу HTTP/1.1. Если сервер на той стороне настроен на жесткое требование HTTP/2 (или HTTP/3), вы получите ошибку соединения или «Unsupported protocol». Рассмотрим, как преодолеть это ограничение, используя доступные архитектурные подходы.
Самый быстрый и эффективный способ «подружить» 1С с протоколом HTTP/2 — это делегировать отправку запроса специализированной утилите cURL. Она установлена практически во всех современных операционных системах и поддерживает все актуальные стандарты HTTP.
Для реализации этого метода нам потребуется выполнить команду системы из кода 1С. Разберем процесс по шагам:
КомандаСистемы() или ЗапуститьПриложение() для выполнения вызова.Пример формирования команды для отправки multipart-запроса через cURL:
// Пример формирования строки вызова cURL
Команда = "curl -X POST https://адрес_сервиса/api/v3/true-api/documents " +
"--http2 " +
"-H ""Authorization: Bearer Токен"" " +
"-H ""Accept: application/json"" " +
"-F ""jsonFile=@C:\папка\файл.json"" " +
"-o C:\папка\ответ.txt";
КомандаСистемы(Команда);
Обратите внимание на ключ --http2 — именно он принудительно заставляет клиент использовать нужный протокол. Результат выполнения запроса лучше перенаправлять в текстовый файл, чтобы затем считать его в 1С функцией Прочитать() объекта ТекстовыйДокумент.
Если вы разрабатываете высоконагруженную систему, где вызовы КомандаСистемы() могут замедлять работу или создавать проблемы с безопасностью (например, из-за хранения токенов в командной строке), лучшим решением будет создание промежуточного микросервиса-прокси.
Суть метода заключается в следующем:
Этот подход является наиболее надежным с точки зрения архитектуры. Вы получаете централизованное место для логирования запросов, обработки ошибок и управления версиями протоколов. Кроме того, современные стеки разработки (например, .NET 6/8 или Go) поддерживают HTTP/3, что дает вам «запас прочности» на случай будущего обновления требований со стороны API-провайдеров.
Прежде чем приступать к написанию оберток, проанализируем ситуацию на стороне целевого сервера:
cURL, уделите особое внимание обработке ошибок. 1С не увидит ошибку на сетевом уровне напрямую, поэтому всегда проверяйте код возврата операционной системы и содержимое файла, в который был записан ответ.multipart/form-data требует строгого соблюдения синтаксиса командной строки. Если в путях к файлам присутствуют пробелы, обязательно заключайте их в двойные кавычки.Таким образом, хотя штатные средства 1С не поддерживают HTTP/2 «из коробки», использование специализированных утилит или создание архитектурной прослойки позволяет эффективно решать задачи интеграции с любыми современными API.