Администрирование · 10 мин
Как включить отладку на сервере 1С
Как включить режим отладки на сервере 1С:Предприятие: параметр -debug, настройка службы агента, отладка по HTTP и TCP, типичные ошибки и проверка результата.
Отладка на сервере 1С:Предприятие нужна, когда код выполняется в контексте сервера: серверные процедуры и функции общих модулей, фоновые задания, регламентные задания, веб-сервисы и HTTP-сервисы. Без включённого режима отладки на сервере конфигуратор просто «не видит» эти предметы отладки, и точки останова в серверном коде не срабатывают.
Режим включается не в конфигураторе, а на уровне сервера 1С — параметром запуска агента сервера. Способ зависит от операционной системы (Windows или Linux) и от протокола отладки (TCP или HTTP). Ниже разобраны оба варианта с точными действиями, проверкой результата и типичными ошибками.
Что нужно понять перед настройкой
Клиент-серверный режим 1С состоит из трёх уровней: клиентское приложение, кластер серверов 1С и СУБД. Серверный код исполняется рабочими процессами кластера (rphost), поэтому именно кластер должен быть запущен в режиме отладки. Параметр задаётся один раз для агента сервера (ragent) и распространяется на все рабочие процессы кластера.
Начиная с платформы 8.3.7 появился новый протокол отладки по HTTP, а с версии 8.3.15 он стал использоваться по умолчанию в конфигураторе. Старый протокол — TCP. Протокол, указанный при запуске сервера, и протокол, выбранный в настройках конфигуратора, должны совпадать, иначе подключение к предметам отладки не произойдёт.
Включение отладки на сервере под Windows
На Windows агент сервера 1С обычно работает как служба, и параметры её запуска хранятся в реестре. Откройте редактор реестра (regedit) и перейдите в ветку службы агента: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Имя службы зависит от версии платформы и разрядности, например 1C:Enterprise 8.3 Server Agent (x86-64).
Найдите параметр ImagePath — это строка запуска агента. Добавьте в неё ключ -debug, а при необходимости и указание протокола. Пример фрагмента строки:
"C:\Program Files\1cv8\8.3.22.1750\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -httpПосле правки реестра обязательно перезапустите службу агента сервера — через оснастку «Службы» (services.msc) или командой net stop / net start с именем службы. Без перезапуска новый параметр не применится, потому что он читается только при старте процесса.
- 1Остановите работу пользователей или предупредите о перезапуске службы
- 2Откройте реестр и найдите службу агента сервера 1С
- 3В параметр ImagePath добавьте -debug и протокол (-http или -tcp)
- 4Перезапустите службу агента сервера
- 5В конфигураторе откройте Отладка → Подключение и проверьте доступные предметы отладки
Включение отладки на сервере под Linux
На Linux агент сервера запускается скриптом или unit-файлом systemd. Параметры запуска обычно лежат в файле конфигурации службы, например в unit-файле srv1cv8.service в директиве ExecStart, либо в переменных окружения рядом со скриптом запуска.
Добавьте в строку запуска ragent те же ключи: -debug и при необходимости -http или -tcp. Затем перезапустите службу командой systemctl restart srv1cv8 (имя службы может отличаться). Проверить, что параметр применился, можно через ps aux | grep ragent — в строке процесса должен быть виден ключ -debug.
Выбор протокола отладки: HTTP или TCP
Протокол определяет, как конфигуратор соединяется с отлаживаемым процессом. TCP — исторический вариант, он использует диапазон портов кластера и требует, чтобы эти порты были открыты между компьютером разработчика и сервером. HTTP-отладка работает через стандартные механизмы и лучше подходит для сценариев с веб-сервисами, HTTP-сервисами и отладкой через веб-сервер.
Сравнение протоколов
Классический вариант для старых версий платформы. Требует доступности портов кластера; на новых версиях конфигуратор по умолчанию использует HTTP, протокол придётся переключить вручную.
Рекомендуется для платформы 8.3.7 и новее. Необходима для отладки HTTP-сервисов и ряда сценариев через веб-сервер; на сервере должен быть указан ключ -debug -http.
Если сервер запущен с -debug -http, а в конфигураторе в настройках отладки (Сервис → Параметры → вкладка отладки, либо Отладка → Подключение → настройка) выбран TCP, предметы отладки не появятся. Всегда сверяйте обе стороны.
Настройка конфигуратора и подключение к предметам отладки
После перезапуска сервера откройте конфигуратор, подключённый к серверной информационной базе. Перейдите в меню Отладка → Подключение. Если всё настроено верно, в списке появятся доступные предметы отладки: сервер, фоновые задания, веб-сервисы и другие контексты.
Обратите внимание на флажки автоматического подключения: по умолчанию конфигуратор может подключаться только к клиентскому контексту. Отметьте «Сервер», «Фоновое задание» и другие нужные типы, иначе точки останова в серверных модулях не сработают даже при включённом -debug.
Как проверить результат
В ImagePath или выводе ps виден ключ -debug
Ключа нет — служба запущена без отладки, правка не применилась
Видны предметы отладки типа «Сервер», «Фоновое задание»
Список пуст или только клиент — не совпадает протокол или отладка не включена
Выполнение останавливается при вызове серверной процедуры
Точка отображается недоступной (пустой кружок) — предмет отладки не подключён
Отладка фоновых заданий и веб-сервисов
Фоновые задания исполняются отдельными сеансами на сервере, поэтому для их отладки в окне подключения нужно явно отметить тип «Фоновое задание». Удобный приём — поставить точку останова в начале обработчика и запустить задание: конфигуратор подхватит новый сеанс автоматически, если соответствующий тип подключения включён.
Отладка HTTP-сервисов и веб-сервисов требует протокола HTTP на сервере и корректной публикации на веб-сервере. Вызов сервиса извне (например, из браузера или Postman) инициирует серверный сеанс, который конфигуратор подхватит как предмет отладки. Учитывайте, что такие сеансы живут недолго — точку останова ставьте заранее.
Если точка останова в серверном коде отображается пустым кружком, чаще всего дело не в платформе, а в том, что конфигуратор подключён к другой информационной базе или предмет отладки «Сервер» не отмечен в окне подключения. Проверяйте эти две вещи в первую очередь.
Риски и ограничения на продуктивном сервере
Режим отладки снижает производительность кластера: рабочие процессы выполняют дополнительные проверки и поддерживают каналы отладки. На нагруженном продуктивном сервере это заметно. Кроме того, остановленный на точке останова серверный вызов блокирует сеанс пользователя или фоновое задание до продолжения выполнения.
Рекомендуется включать отладку на продуктиве только на время диагностики и выключать после, убрав ключ -debug и снова перезапустив службу. Идеальный вариант — воспроизводить проблему на копии базы или отдельном тестовом сервере, где отладка включена постоянно.
Типичные ошибки и их признаки
Отдельная частая ситуация — правка реестра не в той ветке службы. Если на сервере установлено несколько версий платформы, служб агента может быть несколько. Убедитесь, что редактируете ImagePath именно той службы, которая обслуживает нужный кластер (сверьте путь к ragent.exe и каталог srvinfo).
Что важно запомнить
Отладка сервера включается ключом -debug в строке запуска агента сервера с последующим перезапуском службы. Протокол (HTTP или TCP) должен совпадать на сервере и в конфигураторе, а нужные типы предметов отладки — отмечены в окне подключения. На продуктиве режим держат включённым только на время диагностики.
Частые вопросы
Можно ли включить отладку без перезапуска сервера 1С?
Нет. Параметр -debug читается агентом сервера только при старте, поэтому перезапуск службы обязателен. Планируйте его на время минимальной нагрузки и завершайте сеансы пользователей заранее через консоль кластера.
Почему конфигуратор не видит сервер в списке предметов отладки?
Чаще всего не совпадают протоколы: сервер запущен с -debug -http, а в конфигураторе выбран TCP, или наоборот. Также проверьте, что служба действительно перезапущена после правки и что конфигуратор подключён к серверной базе этого кластера.
Как отладить регламентное задание, которое выполняется по расписанию?
Включите отладку на сервере, в окне «Отладка → Подключение» отметьте тип «Фоновое задание» и поставьте точку останова в обработчике задания. Когда планировщик запустит задание, конфигуратор автоматически подключится к новому сеансу и остановится на точке.
Влияет ли режим отладки на скорость работы пользователей?
Да, включённый режим добавляет накладные расходы в рабочих процессах кластера. На небольших базах это может быть незаметно, на нагруженных системах — ощутимо. Поэтому после завершения диагностики ключ -debug рекомендуется убрать и перезапустить службу.
Какой протокол выбрать для платформы 8.3.20 и новее?
Используйте HTTP: конфигуратор свежих версий по умолчанию работает по этому протоколу, и он же требуется для отладки HTTP-сервисов и сценариев через веб-сервер. TCP оставляйте для совместимости со старыми окружениями.
Точка останова показывается пустым кружком и не срабатывает — что делать?
Пустой кружок означает, что точка не привязана к подключённому предмету отладки. Проверьте, что в окне подключения отмечен нужный тип (например, «Сервер»), что конфигуратор открыт на той же информационной базе, где выполняется код, и что модуль скомпилирован в актуальной версии.