К статье
Практический материал

Разработка и Конфигурация · 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. 1
    Откройте конфигуратор и запустите отладку предприятия (F5)
  2. 2
    Найдите в коде место вызова HTTPСоединение.ОтправитьДляОбработки или Получить
  3. 3
    Поставьте точку останова на строке перед отправкой
  4. 4
    Добавьте объект HTTPЗапрос в табло (Shift+F9) и раскройте АдресРесурса и Заголовки
  5. 5
    В окне «Вычислить выражение» выполните Запрос.ПолучитьТелоКакСтроку() и скопируйте результат

Способ 2. Логирование запроса в коде

Когда отладка невозможна — например, обмен выполняется в фоновом задании на сервере или у пользователя без прав разработчика — запрос логируют программно. Типовой приём: перед отправкой записать адрес, заголовки и тело в текстовый файл или в регистр сведений, а после — код ответа и его тело.

1c
ФайлЛога = Новый ЗаписьТекста("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 в доверенные. Без этого вы увидите только факт соединения, но не содержимое запроса. Учтите, что некоторые защищённые соединения с проверкой сертификата могут отказаться работать через прокси — это ограничение метода.

Сравнение способов просмотра запроса

Отладчик конфигуратора

Быстро и точно, но нужен доступ к коду и возможность запустить отладку. Не подходит для фоновых заданий на сервере без отладки сервера

Логирование в коде

Работает в любых условиях, включая регламентные задания, но требует доработки конфигурации или расширения

Fiddler

Показывает реальный трафик без изменения кода, но требует настройки прокси и установки сертификата для HTTPS

Технологический журнал

Даёт контекст ошибок на уровне платформы, но не показывает тело запроса в удобном виде

Способ 5. Wireshark для сложных случаев

Wireshark анализирует трафик на уровне сетевых пакетов и применяется, когда Fiddler по какой-то причине не подходит — например, соединение идёт мимо прокси. Запустите захват на сетевом интерфейсе, примените фильтр http или по IP-адресу сервера назначения, выполните обмен и изучите пакеты через «Follow — HTTP Stream».

Главное ограничение: HTTPS-трафик Wireshark покажет только в зашифрованном виде. Расшифровка возможна, но требует доступа к ключам сессии и на практике для диагностики 1С почти не применяется — проще использовать Fiddler. Wireshark оправдан, когда нужно понять, уходит ли запрос вообще, на какой адрес и порт, и не блокирует ли его сетевое оборудование.

Проверка ответа сервера и типичные ошибки

Посмотреть запрос — половина задачи: ответ сервера часто объясняет причину сбоя. Код состояния 200 означает успех, 400 — ошибку в структуре запроса, 401/403 — проблему авторизации, 404 — неверный адрес, 500 — ошибку на стороне сервиса. Тело ответа при ошибках обычно содержит описание причины — читайте его через Ответ.ПолучитьТелоКакСтроку(), а не только код.

Типичные ошибки при диагностике
01
Смотрят только код состояния и не читают тело ответа — теряется текстовое описание ошибки от сервиса
02
Проверяют запрос на клиенте, хотя обмен выполняется на сервере 1С — трафик в Fiddler не появляется
03
Не указывают заголовок Content-Type — сервер не может разобрать тело запроса и возвращает 400
04
Путают кодировку: тело в UTF-8, а сервис ждёт windows-1251 — русские символы приходят битыми
05
Ищут запрос в Fiddler без включённой расшифровки HTTPS — видны только CONNECT-пакеты без содержимого

Ещё одна частая ситуация: запрос в 1С сформирован верно, но до сервера не доходит из-за прокси, антивируса или межсетевого экрана. Признак — исключение «Ошибка соединения с сервером» ещё до получения ответа. В этом случае проверяйте доступность адреса с того же компьютера через браузер или команду ping/curl, а также настройки прокси в 1С.

Контрольные точки

Как проверить результат

Запрос виден в Fiddler или логе
Норма

Отображаются адрес, заголовки и тело запроса

Тревожный признак

Запроса нет — обмен идёт с другого компьютера или мимо прокси

Код ответа сервера
Норма

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. Всегда анализируйте не только запрос, но и код с телом ответа сервера, и не забывайте про безопасность логов с токенами и паролями.