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

Разработка и Конфигурация · 11 мин

Отладка на сервере 1С 8.3: как подключить debug по HTTP

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

Отладка серверного кода — одна из самых частых задач при доработке конфигураций 1С:Предприятие 8.3. Процедуры и функции, выполняемые в серверном контексте, нельзя отладить из клиентского сеанса напрямую: конфигуратор должен подключиться к рабочим процессам кластера. Начиная с платформы 8.3.7 доступен механизм отладки по протоколу HTTP, который пришёл на смену отладке по TCP и стал основным рекомендуемым вариантом.

Режим HTTP-отладки проще в настройке: не требуется открывать диапазон портов для каждого рабочего процесса, весь трафик идёт через один порт сервера отладки, а подключение выполняется по адресу информационной базы. При этом многие администраторы сталкиваются с тем, что после включения параметра отладки конфигуратор «не видит» серверные вызовы — чаще всего причина в неперезапущенной службе агента или неверно выбранном протоколе в настройках.

Ниже разобран полный цикл: включение отладки на сервере, выбор протокола HTTP, подключение предметов отладки в конфигураторе, проверка результата и типичные ошибки. Инструкции применимы к серверу 1С под Windows и Linux с незначительными отличиями в способе указания параметров.

Какие режимы отладки существуют в платформе 8.3

Платформа 1С:Предприятие 8.3 поддерживает два протокола отладки: TCP и HTTP. TCP-отладка — исторически первый механизм, при котором конфигуратор соединяется с каждым рабочим процессом кластера по отдельному сетевому порту. Это создаёт сложности при работе через межсетевые экраны и в распределённых сетях.

HTTP-отладка работает через сервер отладки (dbgs), который запускается в составе кластера. Конфигуратор обращается к нему по единому адресу, а сервер отладки уже маршрутизирует команды к нужным рабочим процессам. Такой подход совместим с публикацией базы на веб-сервере и удобен для отладки веб-сервисов, HTTP-сервисов и фоновых заданий.

Сравнение протоколов отладки

Отладка по TCP

Подходит для локальной сети без ограничений по портам. Требует доступности портов рабочих процессов, не работает через публикацию веб-сервера.

Отладка по HTTP

Рекомендуемый вариант. Работает через единый порт сервера отладки, совместим с веб-публикацией, подходит для отладки HTTP-сервисов и фоновых заданий.

Выбор протокола задаётся дважды: на стороне сервера (параметром запуска агента) и на стороне конфигуратора (в настройках отладки). Если значения не совпадают, подключение предметов отладки будет невозможно, хотя явной ошибки платформа иногда не показывает.

Включение отладки на сервере под Windows

На Windows-сервере параметры запуска агента сервера 1С хранятся в реестре, в параметре службы. Стандартный путь — ветка HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, подраздел службы агента сервера 1С конкретной версии (имя обычно содержит номер версии платформы, например «1C:Enterprise 8.3 Server Agent»).

Найдите параметр ImagePath и дополните строку запуска ключами -debug -http. Фрагмент строки будет выглядеть примерно так: ...ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -http. Важно не удалить существующие параметры и не нарушить кавычки вокруг пути к исполняемому файлу.

Порядок включения отладки (Windows)
  1. 1
    Откройте редактор реестра и найдите раздел службы агента сервера 1С нужной версии.
  2. 2
    В параметре ImagePath добавьте в строку запуска ключи -debug -http.
  3. 3
    Перезапустите службу агента сервера 1С через оснастку services.msc.
  4. 4
    Убедитесь, что служба запустилась без ошибок и кластер доступен.
  5. 5
    Проверьте в консоли кластера, что сервер отладки активен.

После правки реестра обязателен перезапуск службы — параметры читаются только при старте процесса. Перезапуск службы агента завершит активные сеансы пользователей, поэтому выполняйте операцию в согласованное время либо предупредите пользователей заранее. Сеансы будут разорваны без сохранения несохранённых данных в открытых формах.

Включение отладки на сервере под Linux

На Linux параметры запуска агента задаются в скрипте или unit-файле службы. В зависимости от способа установки это может быть файл /etc/sysconfig/1c-enterprise (в нём задаётся переменная с параметрами запуска) или секция ExecStart в systemd-юните. Точное расположение зависит от дистрибутива и способа установки платформы.

Добавьте к параметрам запуска -debug -http и перезапустите службу командой вида systemctl restart srv1cv83 (имя службы может отличаться). После перезапуска полезно проверить список процессов и убедиться, что ragent запущен с новыми параметрами — это видно в выводе ps aux | grep ragent.

bash
ps aux | grep ragent   # проверить, что в строке запуска есть -debug -http

Если служба не стартует после правки, проверьте синтаксис строки запуска: лишний пробел внутри пути, потерянная кавычка или опечатка в имени ключа приводят к аварийному завершению агента сразу после старта. Журнал ошибок смотрите через journalctl -u имя_службы или в технологическом журнале платформы, если он настроен.

Настройка конфигуратора для подключения по HTTP

На стороне разработчика откройте конфигуратор и перейдите в меню «Сервис → Параметры». На вкладке, отвечающей за отладку, установите протокол отладки «HTTP». Там же указывается адрес сервера отладки — обычно это имя или IP-адрес сервера 1С, порт сервера отладки по умолчанию 1550.

Далее откройте меню «Отладка → Подключение». В списке доступных предметов отладки появятся активные соединения: клиентские сеансы, фоновые задания, соединения веб-сервисов и HTTP-сервисов. Отметьте нужные типы — для отладки серверного кода, вызываемого из клиента, достаточно подключить соответствующий клиентский сеанс; серверные вызовы будут перехвачены автоматически в рамках этого сеанса.

Для отладки HTTP-сервисов и веб-сервисов база должна быть опубликована на веб-сервере, а в настройках публикации включена возможность отладки. В этом случае обращение к сервису по HTTP создаст отладочное соединение, которое появится в списке предметов отладки — его нужно подключить до или сразу после вызова сервиса.

Проверка результата и контрольные точки

Простейшая проверка — поставить точку останова в серверной процедуре общего модуля и выполнить действие в клиентском приложении, которое её вызывает. Если настройка выполнена верно, конфигуратор остановит выполнение на точке и покажет стек вызовов с переходом в серверный контекст.

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

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

Строка запуска агента сервера
Норма

В параметрах процесса ragent присутствуют -debug -http

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

Параметров нет — служба не была перезапущена или правка не сохранена

Список предметов отладки в конфигураторе
Норма

Видны активные сеансы и фоновые задания, подключение проходит без ошибок

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

Список пуст или ошибка подключения — несовпадение протокола или недоступность порта 1550

Срабатывание точки останова
Норма

Конфигуратор останавливается в серверной процедуре

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

Точка не срабатывает — предмет отладки не подключён или код выполняется в другом сеансе

Дополнительный признак корректной работы — наличие процесса сервера отладки (dbgs) среди процессов кластера. Его отсутствие означает, что HTTP-отладка не активирована, даже если ключ -debug присутствует: без ключа -http сервер отладки работает в режиме TCP.

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

Типичные ошибки и ограничения

Типичные ошибки
01
Забыли перезапустить службу агента после правки параметров — отладка не включается, хотя ключи прописаны верно.
02
В конфигураторе выбран протокол TCP, а сервер запущен с -http — предметы отладки не подключаются.
03
Порт сервера отладки закрыт межсетевым экраном — конфигуратор не может достучаться до dbgs при работе с другого компьютера.
04
Точка останова стоит в коде, который выполняется в фоновом задании, а подключён только клиентский сеанс — остановка не происходит.
05
Отладку включили на продуктивном кластере и оставили надолго — деградация производительности для всех пользователей.

Отдельная ситуация — кластер из нескольких рабочих серверов. Сервер отладки должен быть доступен на том сервере, где выполняется отлаживаемый код; при миграции сеанса между рабочими процессами подключение может потребоваться выполнить заново. Для стабильной отладки в таких конфигурациях иногда временно ограничивают кластер одним рабочим сервером.

Ещё одно ограничение: отладка недоступна для кода, выполняемого в привилегированном режиме некоторых системных вызовов, а также для сеансов, запущенных под служебными пользователями без возможности интерактивного подключения. В таких случаях помогает запись в журнал регистрации или технологический журнал как альтернативный способ диагностики.

Маршрут решения

Как выбрать действие

Конфигуратор не видит ни одного предмета отладкиПроверьте совпадение протокола (HTTP в обеих настройках) и доступность порта сервера отладки
Сеансы видны, но точка останова не срабатываетУбедитесь, что подключён именно тот сеанс или фоновое задание, где выполняется код
Нужно отладить HTTP-сервисОпубликуйте базу на веб-сервере, включите отладку в публикации и подключите соединение сервиса в списке предметов
Служба агента не стартует после правкиПроверьте синтаксис строки запуска: кавычки, пробелы, правильность ключей

FAQ

Чем отличаются ключи -debug и -debug -http при запуске агента?

Ключ -debug без уточнения протокола включает отладку по TCP — конфигуратор подключается напрямую к рабочим процессам через их порты. Добавление -http переводит отладку на протокол HTTP через сервер отладки dbgs с единой точкой подключения. Указывать оба режима одновременно не нужно: работает тот, что задан последним параметром.

Можно ли отлаживать код без перезапуска службы агента сервера?

Нет. Параметры отладки читаются только при старте процесса агента, поэтому перезапуск службы обязателен. Это одна из причин, почему включение отладки на продуктивном сервере планируют заранее — перезапуск разрывает все активные сеансы пользователей.

Почему в списке предметов отладки нет фонового задания?

Фоновое задание появляется в списке только пока оно выполняется. Если задание короткое, оно завершается раньше, чем вы успеваете его подключить. Практический приём — временно добавить в начало метода задания цикл ожидания или точку останова с автоматическим подключением новых предметов отладки, если такая опция включена в настройках конфигуратора.

Работает ли HTTP-отладка через веб-клиент?

Да, и это одно из её преимуществ. При работе через веб-клиент серверный код выполняется на сервере 1С, и HTTP-отладка позволяет подключиться к соответствующему сеансу. База должна быть опубликована с разрешением отладки, а в конфигураторе подключается сеанс веб-клиента из списка предметов отладки.

Влияет ли включённая отладка на производительность сервера?

Да, заметно. В режиме отладки платформа выполняет дополнительные проверки при исполнении каждой строки кода, что замедляет работу всех сеансов кластера, а не только отлаживаемого. После завершения работ ключи отладки следует убрать из строки запуска и перезапустить службу.

Итог

Что важно запомнить

HTTP-отладка на сервере 1С 8.3 включается ключами -debug -http в строке запуска агента и требует перезапуска службы. В конфигураторе выбирается тот же протокол HTTP, после чего подключаются нужные предметы отладки. Не оставляйте отладку включённой на продуктивном сервере — она снижает производительность всего кластера.