Разработка и отладка HTTP-сервисов в 1С — задача, требующая понимания работы веб-протоколов и специфики настройки серверной части. Часто разработчики сталкиваются с ситуацией, когда при попытке проверить сервис через адресную строку браузера возникает HTTP ERROR 405 (Method Not Allowed). Рассмотрим подробно, почему это происходит и как правильно организовать процесс отладки, чтобы интеграция между 1С прошла без боли и страданий.
Проанализируем ситуацию: когда вы вставляете URL в адресную строку браузера и нажимаете Enter, браузер всегда отправляет GET-запрос. Если в вашем HTTP-сервисе для данного шаблона настроен только метод POST, сервер 1С закономерно вернет ошибку 405, так как метод GET для этого ресурса не разрешен. Для тестирования POST-запросов (особенно с передачей тела XML или JSON) необходимо использовать специализированные инструменты.
Разберем основные инструменты, которые позволяют имитировать работу сторонних систем и отправлять полноценные запросы к вашему сервису.
POST, указать заголовки (например, Content-Type: application/xml) и вставить текст XML в тело запроса (вкладка Body -> raw -> XML).Для быстрой проверки можно написать небольшую обработку внутри самой 1С, которая будет посылать запрос к вашему же сервису. Такой подход часто перерастает в универсальный модуль с процедурами HTTP-сервиса, позволяющий быстро масштабировать API. Посмотрим на пример кода, который имитирует отправку данных:
ххЗаголовки = Новый Соответствие;
ххЗаголовки.Вставить("Content-Type", "application/xml; charset=utf-8");
ххЗапрос = Новый HTTPЗапрос("/hs/OBMEN/UPLOAD/1", ххЗаголовки);
ххЗапрос.УстановитьТелоИзСтроки(ТекстВашегоXML);
ххСоединение = Новый HTTPСоединение("localhost", , , , , 3);
ххОтвет = ххСоединение.ОтправитьДляОбработки(ххЗапрос);
Этот способ удобен тем, что вы можете запустить код в одной сессии 1С, а отладчик сработает в другой (серверной) сессии.
Если запрос доходит до 1С, но точка останова внутри метода POST не срабатывает, нужно проверить настройки окружения. Особое внимание уделите безопасности: иногда требуется публикация HTTP сервиса с использованием клиентского SSL сертификата, что накладывает дополнительные требования к настройке веб-сервера. Проанализируем основные требования:
default.vrd в строке соединения прописан параметр debug="true".Агент сервера 1С:Предприятия должна быть запущена с ключом -debug.HTTP-сервисы.Внутри самого метода сервиса важно правильно извлечь входящие данные. Если вы работаете с различными форматами данных, вам может помочь модуль «Трансформер» для конвертации JSON/XML/CSV. Рассмотрим, как программно получить доступ к телу запроса и его заголовкам через объект ЗапросHTTP:
// Получаем тип контента для понимания формата данных
ТипСообщения = Запрос.Заголовки.Получить("Content-Type");
// Если нужно получить данные как строку
ТекстЗапроса = Запрос.ПолучитьТелоКакСтроку();
// Для больших XML-файлов лучше использовать поток
Поток = Запрос.ПолучитьТелоКакПоток();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьПоток(Поток);
при разработке сложных интеграций, например, выполняя тестирование запросов к ВетИС, важно сохранять параметры запросов для последующего анализа. Важный совет: Если отладка на сервере по каким-то причинам невозможна, используйте ЗаписьЖурналаРегистрации в начале метода. Это позволит вам зафиксировать факт обращения к сервису и увидеть сырые данные, которые пришли от внешней системы.