Начиная с версии платформы 8.3.8, компания 1С представила новый механизм отладки по протоколу HTTP. Этот механизм пришел на замену старому (по протоколу TCP) и стал особенно актуален для распределенных систем, работы через интернет и отладки веб-сервисов. Однако на практике разработчики часто сталкиваются с ситуацией, когда, несмотря на все включенные ключи, точки останова в модулях веб-сервисов упорно игнорируются. Проанализируем, как правильно настроить окружение и какие нюансы нужно учесть, чтобы отладка заработала.
Прежде всего, разберем порядок запуска сервера. Для активации нового механизма служба ragent должна быть запущена с определенными параметрами. В строке запуска службы (в реестре Windows или в скрипте запуска на Linux) необходимо добавить ключи -debug и -http. Важно соблюдать синтаксис: параметры добавляются в конец строки ImagePath в реестре.
Пример правильной строки запуска службы в реестре Windows:
"C:\Program Files\1cv8\8.3.x.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
Обратим внимание на важный момент: использование ключа -http инициирует запуск вспомогательного процесса dbgs.exe (сервера отладки). Если служба 1С после добавления ключа перестала запускаться, проанализируем системный лог событий Windows. Часто причиной является занятый TCP-порт 1550, который dbgs.exe пытается занять по умолчанию. Если этот порт используется другим приложением, необходимо явно указать свободный порт с помощью параметра -debugServerPort.
Даже если сервер настроен верно, конфигуратор может "не видеть" сеанс веб-сервиса. Рассмотрим типичную ситуацию: разработчик включает флаг "Web-сервисы" в настройках автоматического подключения, но отладка не срабатывает. Выясним причину этого поведения.
Оказывается, в клиент-серверном варианте работы модуль веб-сервиса зачастую перехватывается отладчиком не как специфический объект "Web-сервис", а как обычный "Серверный вызов". Чтобы гарантированно поймать точку останова, выполним следующие шаги в Конфигураторе:
Web-сервисы, но и напротив Сервер. Оптимальным решением для поиска проблемы будет временная установка всех флажков в данном окне.Проанализируем результат: как показывает практика, после установки флага Сервер сеансы веб-сервисов начинают успешно останавливаться на точках разрыва. Это связано с особенностями диспетчеризации вызовов внутри платформы.
Для веб-сервисов критически важную роль играет файл публикации на веб-сервере (IIS или Apache). Если база опубликована, а отладка все равно не идет, проверим содержимое файла default.vrd. В нем должны быть явно указаны параметры отладки. Рассмотрим структуру секции, которую необходимо добавить или изменить:
<point name="MyWebService"
alias="ws1.1cws"
enable="true"
reuseSessions="autouse"
debug="true"
debuggerURL="http://имя_вашего_сервера:1550"/>
Здесь параметр debug="true" разрешает отладку для конкретной точки публикации, а debuggerURL указывает адрес сервера отладки (того самого dbgs.exe). Использование прямого указания URL в файле публикации позволяет избежать проблем, когда веб-сервер и сервер 1С находятся в разных подсетях или за NAT.
Если все настройки выполнены, но связи нет, проверим работу брандмауэра и антивирусного ПО. Процесс ragent.exe и dbgs.exe должны иметь разрешения на входящие и исходящие соединения. Посмотрим, доступен ли сервер отладки из браузера. Введем адрес в формате http://адрес_сервера:1550. Если сервер отладки работает корректно и порт открыт, браузер должен вернуть техническую информацию (обычно XML-ответ платформы или пустую страницу без ошибки "404/Соединение сброшено").
Также не забудем про права учетной записи, от которой запущен веб-сервер (например, IUSR или ApplicationPoolIdentity в IIS). Она должна иметь техническую возможность достучаться до портов сервера 1С. В сложных сетевых конфигурациях рекомендуется везде использовать статические IP-адреса вместо имен хостов, чтобы исключить ошибки разрешения имен DNS.
Важно помнить, что протокол HTTP-отладки несовместим со старым механизмом TCP в рамках одного сеанса. Если вы перешли на -http, убедитесь, что в настройках отладки конфигуратора (Сервис — Параметры — Отладка) выбран именно Протокол HTTP. После смены протокола в параметрах конфигуратора программу необходимо перезапустить.
Если сеанс всё равно не ловится, попробуем перезагрузить веб-сервер (IIS/Apache). Иногда кэшированные настройки публикации мешают инициализации отладочной сессии. Последовательное выполнение этих действий позволяет решить большинство проблем с отладкой современных веб-интерфейсов на платформе 1С.