Разработка собственных интеграционных решений на базе HTTP-сервисов в платформе «1С:Предприятие» — стандартная задача для современного программиста. Однако на этапе тестирования разработчики часто сталкиваются с неприятной проблемой: внешнее приложение (например, Postman) успешно отправляет запрос и получает корректный ответ, но точка останова в модуле HTTP-сервиса упорно игнорируется отладчиком. В списке доступных предметов отладки при этом полностью отсутствует сеанс HTTP-сервиса.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем разницу между протоколами отладки TCP/IP и HTTP, а также составим пошаговую инструкцию по гарантированному запуску отладки HTTP-сервисов.
Для начала рассмотрим классический пример кода простейшего HTTP-сервиса, с которым экспериментируют разработчики:
Функция getdatapost(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Тело = Запрос.ПолучитьТелоКакСтроку();
Ответ.УстановитьТелоИзСтроки("Ок");
Возврат Ответ;
КонецФункции
Когда вы отправляете POST-запрос через утилиту Postman по адресу вида localhost/http/hs/ServIIS/getdata, веб-сервер (IIS или Apache) мгновенно перенаправляет этот запрос кластеру серверов 1С. Сервер обрабатывает код за миллисекунды и возвращает ответ "Ок". Сеанс под этот запрос создается динамически и «живет» ровно столько, сколько выполняется код функции.
Поскольку сеанс закрывается мгновенно, разработчик физически не успевает вручную подключиться к нему через меню отладки. Чтобы отладчик автоматически перехватывал такие сеансы, требуется тонкая настройка всей цепочки: службы сервера 1С, конфигурационного файла публикации веб-сервиса и параметров самого Конфигуратора.
---
Это самый проверенный и надежный способ отладки, если ваш веб-сервер и сервер приложений 1С находятся в одной локальной сети или на одном компьютере.
Рассмотрим по шагам, как запустить отладку по протоколу TCP/IP:
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.
C:\inetpub\wwwroot\MyBase\). Откройте файл default.vrd любым текстовым редактором и найдите узел <debug>. Для протокола TCP/IP он должен выглядеть следующим образом:
<debug enable="true" protocol="tcp" url="tcp://localhost"/>
localhost укажите IP-адрес компьютера разработчика, на котором запущен Конфигуратор.
default.vrd будут проигнорированы веб-сервером до тех пор, пока вы его не перезапустите. Выполните перезапуск IIS (команда iisreset в командной строке от имени администратора) или перезапустите службу Apache.
1560–1591, а также порты 1540 и 1541. Убедитесь, что брандмауэр Windows или локальный антивирус не блокирует эти соединения.
После выполнения этих шагов отправьте тестовый запрос из Postman. В момент выполнения запроса в Конфигураторе автоматически сработает точка останова в вашем модуле HTTP-сервиса.
---
Начиная с платформы версии 8.3.7, в 1С появился механизм отладки по протоколу HTTP. Он незаменим, когда разработчик и сервер приложений находятся в разных сетях (например, работа через VPN, NAT или облачную инфраструктуру), так как этот протокол не требует открытия входящих портов на локальном компьютере разработчика.
Проанализируем процесс настройки отладки по 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
1561 (или 1550 в зависимости от настроек кластера).
http://имя_сервера:1561). Перезапустите Конфигуратор для применения изменений.
default.vrd и отредактируйте параметры отладки следующим образом:
<debug enable="true" protocol="http" url="http://имя_сервера_отладки:1561" />
имя_сервера_отладки на сетевое имя компьютера или IP-адрес, где запущен DBGS (сервер приложений 1С).
---
Если вы выполнили все настройки, но отладка по-прежнему не работает, рекомендуем проанализировать следующие типичные ошибки:
MyWorkBase) должно символ в символ совпадать с именем базы, указанным в файле публикации default.vrd (параметр ib="...") и в URL запроса. Если регистр отличается (например, в URL написано myworkbase), веб-сервер обработает запрос, но отладчик сеанс не перехватит.http://localhost/http/hs/ServIIS/getdata в обычный веб-браузер. Помните, что браузер при таком переходе всегда отправляет запрос методом GET. Если в вашей конфигурации для этого шаблона разрешен только метод POST, вы получите ошибку или пустой ответ, а точка останова в методе POST не сработает. Для тестирования POST-запросов всегда используйте специализированные утилиты вроде Postman.Таким образом, правильное сочетание настроек службы сервера 1С, файла default.vrd и параметров автоматического подключения в Конфигураторе позволит вам комфортно отлаживать любые интеграционные HTTP-решения без потери времени.