Почему не работает отладка HTTP-сервисов в 1С и как её правильно настроить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разработка собственных интеграционных решений на базе HTTP-сервисов в платформе «1С:Предприятие» — стандартная задача для современного программиста. Однако на этапе тестирования разработчики часто сталкиваются с неприятной проблемой: внешнее приложение (например, Postman) успешно отправляет запрос и получает корректный ответ, но точка останова в модуле HTTP-сервиса упорно игнорируется отладчиком. В списке доступных предметов отладки при этом полностью отсутствует сеанс HTTP-сервиса.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем разницу между протоколами отладки TCP/IP и HTTP, а также составим пошаговую инструкцию по гарантированному запуску отладки HTTP-сервисов.

Выясняем причину: почему стандартная отладка не видит HTTP-запросы?

Для начала рассмотрим классический пример кода простейшего HTTP-сервиса, с которым экспериментируют разработчики:


Функция getdatapost(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);
    
    Тело = Запрос.ПолучитьТелоКакСтроку();
    
    Ответ.УстановитьТелоИзСтроки("Ок");
    Возврат Ответ;
КонецФункции

Когда вы отправляете POST-запрос через утилиту Postman по адресу вида localhost/http/hs/ServIIS/getdata, веб-сервер (IIS или Apache) мгновенно перенаправляет этот запрос кластеру серверов 1С. Сервер обрабатывает код за миллисекунды и возвращает ответ "Ок". Сеанс под этот запрос создается динамически и «живет» ровно столько, сколько выполняется код функции.

Поскольку сеанс закрывается мгновенно, разработчик физически не успевает вручную подключиться к нему через меню отладки. Чтобы отладчик автоматически перехватывал такие сеансы, требуется тонкая настройка всей цепочки: службы сервера 1С, конфигурационного файла публикации веб-сервиса и параметров самого Конфигуратора.

---

Вариант 1. Настройка отладки по классическому протоколу TCP/IP

Это самый проверенный и надежный способ отладки, если ваш веб-сервер и сервер приложений 1С находятся в одной локальной сети или на одном компьютере.

Рассмотрим по шагам, как запустить отладку по протоколу TCP/IP:

  1. Включаем отладку на сервере 1С. Для этого служба сервера 1С (ragent.exe) должна быть запущена с ключом -debug. Проверьте строку запуска службы в реестре Windows. Она должна выглядеть примерно так (обратите внимание на ключ в самом конце):
    "C:\Program Files\1cv8\8.3.16.1148\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
    Важно: Не добавляйте на данном этапе ключ -http, если планируете использовать стандартный протокол TCP/IP.
  2. Настраиваем автоматическое подключение в Конфигураторе. Запустите Конфигуратор, откройте меню Отладка -> Подключение.... В открывшемся окне нажмите кнопку Автоматическое подключение. Обязательно установите флажки напротив пунктов «HTTP-сервисы» и «Web-сервисы». Без этой настройки отладчик не будет автоматически «ловить» кратковременные фоновые сеансы веб-запросов.
  3. Корректируем файл публикации default.vrd. Перейдите в каталог, куда опубликована ваша информационная база на веб-сервере (например, C:\inetpub\wwwroot\MyBase\). Откройте файл default.vrd любым текстовым редактором и найдите узел <debug>. Для протокола TCP/IP он должен выглядеть следующим образом:
    <debug enable="true" protocol="tcp" url="tcp://localhost"/>
    Если веб-сервер и Конфигуратор находятся на разных компьютерах, вместо localhost укажите IP-адрес компьютера разработчика, на котором запущен Конфигуратор.
  4. Перезапускаем веб-сервер. Любые изменения в файле default.vrd будут проигнорированы веб-сервером до тех пор, пока вы его не перезапустите. Выполните перезапуск IIS (команда iisreset в командной строке от имени администратора) или перезапустите службу Apache.
  5. Проверяем порты брандмауэра. При отладке по TCP/IP инициатором соединения к отладчику выступает сервер 1С. На компьютере разработчика должны быть открыты входящие порты из диапазона 1560–1591, а также порты 1540 и 1541. Убедитесь, что брандмауэр Windows или локальный антивирус не блокирует эти соединения.

После выполнения этих шагов отправьте тестовый запрос из Postman. В момент выполнения запроса в Конфигураторе автоматически сработает точка останова в вашем модуле HTTP-сервиса.

---

Вариант 2. Настройка современной отладки по протоколу HTTP

Начиная с платформы версии 8.3.7, в 1С появился механизм отладки по протоколу HTTP. Он незаменим, когда разработчик и сервер приложений находятся в разных сетях (например, работа через VPN, NAT или облачную инфраструктуру), так как этот протокол не требует открытия входящих портов на локальном компьютере разработчика.

Проанализируем процесс настройки отладки по HTTP:

  1. Запускаем службу сервера с поддержкой HTTP-отладки. Для этого в строку запуска службы ragent.exe необходимо добавить ключи -debug -http:
    "C:\Program Files\1cv8\8.3.16.1148\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
    После этого сервер 1С автоматически поднимет локальный сервер отладки (DBGS), который по умолчанию работает на порту 1561 (или 1550 в зависимости от настроек кластера).
  2. Переключаем протокол в Конфигураторе. В Конфигураторе перейдите в меню Сервис -> Параметры, выберите вкладку Запуск 1С:Предприятия, далее перейдите на вкладку Отладка. Установите переключатель «Протокол отладки» в положение «Отладка по протоколу HTTP». В поле «Адрес сервера отладки» выберите вариант «Использовать локальный сервер отладки» или «Использовать сервер отладки кластера» (указав адрес вашего сервера 1С и порт отладки, например, http://имя_сервера:1561). Перезапустите Конфигуратор для применения изменений.
  3. Прописываем адрес сервера отладки в файле default.vrd. Для HTTP-отладки веб-сервер должен точно знать, куда отправлять информацию о сессиях. Откройте файл default.vrd и отредактируйте параметры отладки следующим образом:
    <debug enable="true" protocol="http" url="http://имя_сервера_отладки:1561" />
    Замените имя_сервера_отладки на сетевое имя компьютера или IP-адрес, где запущен DBGS (сервер приложений 1С).
  4. Перезапускаем IIS/Apache и настраиваем автоподключение. Как и в первом варианте, обязательно перезапустите веб-сервер и убедитесь, что в меню Отладка -> Подключение -> Автоматическое подключение установлены флажки для HTTP-сервисов.

---

Важные нюансы и неочевидные проблемы

Если вы выполнили все настройки, но отладка по-прежнему не работает, рекомендуем проанализировать следующие типичные ошибки:

Таким образом, правильное сочетание настроек службы сервера 1С, файла default.vrd и параметров автоматического подключения в Конфигураторе позволит вам комфортно отлаживать любые интеграционные HTTP-решения без потери времени.

← На главную