Разработка и Конфигурация · 11 мин
Как посмотреть HTTP-запрос в 1С
Способы посмотреть HTTP-запрос в 1С: журнал регистрации, отладка HTTPСоединение, Fiddler и Wireshark. Пошаговые инструкции, примеры кода и разбор типичных ошибок.
Когда обмен 1С с внешним сервисом возвращает ошибку или «молчит», первое, что нужно сделать, — увидеть, какой именно HTTP-запрос реально отправляется: адрес, заголовки, тело, кодировку. В самой платформе 1С нет встроенного «сниффера», который покажет трафик одной кнопкой, поэтому применяют несколько подходов: отладку в конфигураторе, логирование в коде, журнал регистрации и внешние инструменты — Fiddler, Wireshark, Postman.
Выбор способа зависит от задачи. Если вы разработчик и запрос формируется в вашем коде, достаточно отладчика и вывода параметров запроса. Если обмен идёт из типовой конфигурации, где код закрыт или его неудобно менять, придётся перехватывать трафик на уровне системы. Ниже разобраны оба сценария с конкретными действиями.
Что именно нужно увидеть в HTTP-запросе
Прежде чем выбирать инструмент, определите, какие данные вам нужны. Обычно при диагностике обмена смотрят четыре вещи: URL и строку запроса (куда уходит запрос), заголовки (авторизация, Content-Type, кодировка), тело запроса (JSON, XML, двоичные данные) и ответ сервера с кодом состояния. Часто проблема скрывается именно в заголовках — например, веб-сервис отклоняет запрос из-за неверного Content-Type, хотя тело сформировано правильно.
В 1С HTTP-запрос описывается объектом HTTPЗапрос, а отправка выполняется через HTTPСоединение методами ОтправитьДляОбработки (POST), Получить (GET), Записать (PUT) и другими. Зная это, можно точечно вставить логирование именно в место вызова этих методов.
Способ 1. Отладка в конфигураторе
Самый прямой способ — установить точку останова перед вызовом метода отправки и посмотреть содержимое объекта HTTPЗапрос. Для этого запустите отладку (F5 в конфигураторе или «Отладка — Начать отладку»), найдите в коде место формирования запроса и поставьте точку останова (F9). После остановки добавьте объект в табло (Shift+F9) и раскройте его свойства.
Ключевые свойства для просмотра: АдресРесурса — путь и параметры запроса, Заголовки — соответствие с парами «имя — значение». Тело запроса в табло напрямую не видно, его получают методом Запрос.ПолучитьТелоКакСтроку(). Этот же вызов можно выполнить в окне «Вычислить выражение» прямо во время остановки.
У этого способа есть ограничение: он работает, только если тело запроса установлено строкой или из файла. Если тело задано как двоичные данные или поток, ПолучитьТелоКакСтроку() вернёт данные в текущей кодировке, и бинарное содержимое отобразится некорректно. В таком случае выгружайте тело в файл и открывайте его отдельно.
- 1Откройте конфигуратор и запустите отладку предприятия (F5)
- 2Найдите в коде место вызова HTTPСоединение.ОтправитьДляОбработки или Получить
- 3Поставьте точку останова на строке перед отправкой
- 4Добавьте объект HTTPЗапрос в табло (Shift+F9) и раскройте АдресРесурса и Заголовки
- 5В окне «Вычислить выражение» выполните Запрос.ПолучитьТелоКакСтроку() и скопируйте результат
Способ 2. Логирование запроса в коде
Когда отладка невозможна — например, обмен выполняется в фоновом задании на сервере или у пользователя без прав разработчика — запрос логируют программно. Типовой приём: перед отправкой записать адрес, заголовки и тело в текстовый файл или в регистр сведений, а после — код ответа и его тело.
ФайлЛога = Новый ЗаписьТекста("C:\\Temp\\http_log.txt", КодировкаТекста.UTF8, , Истина);
ФайлЛога.ЗаписатьСтроку("URL: " + Соединение.Сервер + Запрос.АдресРесурса);
Для Каждого Заголовок Из Запрос.Заголовки Цикл
ФайлЛога.ЗаписатьСтроку(Заголовок.Ключ + ": " + Заголовок.Значение);
КонецЦикла;
ФайлЛога.ЗаписатьСтроку(Запрос.ПолучитьТелоКакСтроку());
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ФайлЛога.ЗаписатьСтроку("Код ответа: " + Ответ.КодСостояния);
ФайлЛога.ЗаписатьСтроку(Ответ.ПолучитьТелоКакСтроку());
ФайлЛога.Закрыть();При логировании на сервере учитывайте права: у учётной записи, под которой работает агент сервера 1С, должен быть доступ к каталогу лога. Частая ошибка — писать в папку, к которой у агента нет доступа, и получать пустой результат без сообщений об ошибке. Проверяйте успешность записи или оборачивайте код в попытку/исключение с выводом в журнал регистрации.
Способ 3. Журнал регистрации и технологический журнал
Журнал регистрации сам по себе HTTP-запросы не показывает, но фиксирует ошибки обмена, если конфигурация их туда записывает. Откройте «Администрирование — Журнал регистрации», отфильтруйте по пользователю и периоду ошибки и посмотрите сообщения с уровнем «Ошибка» — часто там уже есть текст ответа веб-сервиса.
Более глубокий инструмент — технологический журнал (ТЖ). Он настраивается через файл logcfg.xml в каталоге конфигурации сервера или клиента и позволяет фиксировать события на уровне платформы, включая исключения и обращения к внешним ресурсам. ТЖ не даст готовый «красивый» HTTP-дамп, но покажет точное время ошибки, контекст вызова и текст исключения, что помогает сузить поиск.
Способ 4. Перехват трафика через Fiddler
Fiddler — бесплатный прокси-отладчик, который показывает HTTP-запросы «как есть»: полные заголовки, тело, ответ сервера. Он незаменим, когда обмен выполняет типовая конфигурация и менять код нельзя. Установите Fiddler на тот компьютер, где физически выполняется отправка запроса: если обмен идёт с сервера 1С — на сервер, если с клиентского сеанса — на рабочее место пользователя.
Чтобы 1С отправляла трафик через Fiddler, укажите прокси в параметрах соединения. В коде это делается объектом ИнтернетПрокси с адресом 127.0.0.1 и портом 8888 (порт Fiddler по умолчанию). Если код недоступен, прокси можно задать системно в настройках Windows — платформа 1С в ряде случаев использует системные настройки прокси.
Для HTTPS-запросов дополнительно включите в Fiddler расшифровку HTTPS (Tools — Options — HTTPS — Decrypt HTTPS traffic) и установите корневой сертификат Fiddler в доверенные. Без этого вы увидите только факт соединения, но не содержимое запроса. Учтите, что некоторые защищённые соединения с проверкой сертификата могут отказаться работать через прокси — это ограничение метода.
Сравнение способов просмотра запроса
Быстро и точно, но нужен доступ к коду и возможность запустить отладку. Не подходит для фоновых заданий на сервере без отладки сервера
Работает в любых условиях, включая регламентные задания, но требует доработки конфигурации или расширения
Показывает реальный трафик без изменения кода, но требует настройки прокси и установки сертификата для HTTPS
Даёт контекст ошибок на уровне платформы, но не показывает тело запроса в удобном виде
Способ 5. Wireshark для сложных случаев
Wireshark анализирует трафик на уровне сетевых пакетов и применяется, когда Fiddler по какой-то причине не подходит — например, соединение идёт мимо прокси. Запустите захват на сетевом интерфейсе, примените фильтр http или по IP-адресу сервера назначения, выполните обмен и изучите пакеты через «Follow — HTTP Stream».
Главное ограничение: HTTPS-трафик Wireshark покажет только в зашифрованном виде. Расшифровка возможна, но требует доступа к ключам сессии и на практике для диагностики 1С почти не применяется — проще использовать Fiddler. Wireshark оправдан, когда нужно понять, уходит ли запрос вообще, на какой адрес и порт, и не блокирует ли его сетевое оборудование.
Проверка ответа сервера и типичные ошибки
Посмотреть запрос — половина задачи: ответ сервера часто объясняет причину сбоя. Код состояния 200 означает успех, 400 — ошибку в структуре запроса, 401/403 — проблему авторизации, 404 — неверный адрес, 500 — ошибку на стороне сервиса. Тело ответа при ошибках обычно содержит описание причины — читайте его через Ответ.ПолучитьТелоКакСтроку(), а не только код.
Ещё одна частая ситуация: запрос в 1С сформирован верно, но до сервера не доходит из-за прокси, антивируса или межсетевого экрана. Признак — исключение «Ошибка соединения с сервером» ещё до получения ответа. В этом случае проверяйте доступность адреса с того же компьютера через браузер или команду ping/curl, а также настройки прокси в 1С.
Как проверить результат
Отображаются адрес, заголовки и тело запроса
Запроса нет — обмен идёт с другого компьютера или мимо прокси
200 или другой успешный код 2xx
4xx/5xx — читайте тело ответа для причины
Структура соответствует документации API, кириллица читаема
Битые символы или лишние поля — проблема кодировки или формирования
FAQ
Как посмотреть HTTP-запрос, если обмен выполняется в фоновом задании?
Включите отладку фоновых заданий в конфигураторе («Отладка — Подключение», отметьте фоновые задания) или добавьте программное логирование запроса в файл. Второй вариант надёжнее, если задание запускается по расписанию и момент выполнения неизвестен.
Почему Fiddler не показывает запросы из 1С?
Чаще всего 1С не использует прокси Fiddler: задайте прокси явно через объект ИнтернетПрокси в коде или в системных настройках. Также проверьте, что запрос отправляется именно с этого компьютера — при клиент-серверной работе обмен может выполняться на сервере.
Как увидеть содержимое HTTPS-запроса?
Включите в Fiddler опцию Decrypt HTTPS traffic и установите его корневой сертификат в доверенные корневые центры сертификации. Без расшифровки видны только факты соединений, но не содержимое. Учтите, что соединения со строгой проверкой сертификата через прокси могут не работать.
Как посмотреть тело запроса, если оно задано двоичными данными?
Метод ПолучитьТелоКакСтроку() вернёт данные в текущей кодировке, что для бинарного содержимого некорректно. Выгрузите тело в файл методом ПолучитьТелоКакПоток() или сохраните исходный файл, из которого тело устанавливалось, и откройте его подходящим редактором.
Можно ли посмотреть запрос без изменения кода конфигурации?
Да: используйте Fiddler с настройкой прокси или Wireshark для анализа трафика. Альтернатива — расширение конфигурации, в котором переопределяется процедура обмена с добавлением логирования, без снятия конфигурации с поддержки.
Сервер возвращает ошибку 400, хотя запрос выглядит правильным. Что проверить?
Сравните заголовок Content-Type с требованиями API, проверьте кодировку тела и наличие обязательных полей по документации сервиса. Полезно отправить тот же запрос из Postman: если он там проходит, различие ищите в заголовках, которые 1С добавляет или не добавляет автоматически.
Что важно запомнить
Для просмотра HTTP-запроса в 1С используйте отладчик и метод ПолучитьТелоКакСтроку(), при невозможности отладки — логирование в файл, а для закрытого кода — перехват трафика через Fiddler с расшифровкой HTTPS. Всегда анализируйте не только запрос, но и код с телом ответа сервера, и не забывайте про безопасность логов с токенами и паролями.