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

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

Как включить точку останова на сервере 1С

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

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

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

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

Почему точка останова на сервере не срабатывает

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

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

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

Запуск сервера 1С в режиме отладки на Windows

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

После изменения строки запуска службу необходимо перезапустить: через оснастку «Службы» или командами net stop и net start с именем службы. Без перезапуска изменения не применятся, и отладка не заработает.

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

batch
"C:\Program Files\1cv8\<версия>\bin\ragent.exe" -debug

Запуск сервера 1С в режиме отладки на Linux

На Linux-сервере агент 1С запускается скриптом или системной службой (systemd-юнитом). Чтобы включить отладку, отредактируйте параметры запуска: в файл юнита или стартовый скрипт добавьте флаг -debug к команде запуска ragent. После правки выполните systemctl daemon-reload (если меняли юнит) и перезапустите службу командой systemctl restart с именем службы сервера 1С.

Проверить, что флаг применился, можно через список процессов: команда ps aux | grep ragent должна показать процесс с параметром -debug в командной строке. Если параметра нет — служба запущена в обычном режиме, и серверная отладка работать не будет.

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

Порядок действий
  1. 1
    Остановите службу агента сервера 1С:Предприятия
  2. 2
    Добавьте ключ -debug в строку запуска службы (реестр Windows или юнит systemd в Linux)
  3. 3
    Запустите службу и убедитесь, что процесс стартовал с флагом -debug
  4. 4
    Откройте конфигуратор, установите точку останова в серверной процедуре
  5. 5
    Выполните Отладка → Начать отладку и воспроизведите действие, вызывающее серверный код
  6. 6
    Убедитесь, что выполнение остановилось на точке останова

Настройка конфигуратора для серверной отладки

Запущенного в режиме отладки сервера недостаточно — конфигуратор должен подключиться к правильному предмету отладки. Откройте меню «Отладка» и проверьте настройки подключения: для клиент-серверной базы тип подключения должен быть «Сервер 1С:Предприятия», а не «Файловый информационная база».

Через пункт «Отладка → Подключение» можно увидеть список доступных предметов отладки. В нём должны отображаться серверные процессы вашей базы. Если список пуст, значит, либо сервер не в режиме отладки, либо сеанс пользователя ещё не запущен — сначала запустите клиентское приложение, затем обновите список.

Точку останова установите в нужной строке серверной процедуры (клик по полю слева от строки или клавиша F9). Обратите внимание на директивы компиляции: код внутри &НаСервере, серверных общих модулей и модулей объектов выполняется на сервере, а код &НаКлиенте — нет. Точка в клиентском коде отладится и без серверной отладки, что иногда маскирует проблему.

Проверка, что отладка сервера работает

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

Если точка не сработала, проверьте по цепочке: запущен ли сервер с ключом -debug, перезапускалась ли служба после изменения параметров, подключён ли конфигуратор к нужной базе и сеансу, не отключена ли точка останова (серый значок вместо красного) и действительно ли выполняется этот код — возможно, условие в программе не даёт дойти до нужной строки.

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

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

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

Параметры процесса агента сервера
Норма

В командной строке процесса есть флаг -debug

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

Флага нет — служба запущена без отладки

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

Видны серверные сеансы базы

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

Список пуст или содержит только локальные процессы

Точка останова в серверном коде
Норма

Выполнение останавливается, виден стек вызовов

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

Точка пропускается, код выполняется без остановки

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

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

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

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

Типичные ошибки
01
Добавили -debug, но не перезапустили службу — отладка не включается
02
Отлаживают клиентскую процедуру и ждут остановки в серверной — нужно ставить точку именно в серверном коде
03
Забывают вручную подключить сеанс фонового задания или веб-сервиса — точка не срабатывает
04
Оставляют сервер в режиме отладки на постоянной основе — падает производительность
05
Работают в конфигураторе другой версии платформы — отладчик не подключается к серверу
Итог

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

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

Частые вопросы

Почему точка останова отображается, но выполнение не останавливается?

Чаще всего сервер запущен без ключа -debug либо служба не перезапускалась после изменения параметров. Также проверьте, что код действительно выполняется: условие в программе может не приводить к нужной строке, а сеанс может работать на другом рабочем сервере кластера.

Нужен ли режим отладки для файловой базы?

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

Как отладить фоновое задание или веб-сервис?

Такие сеансы не подключаются автоматически. Откройте «Отладка → Подключение», дождитесь появления нужного сеанса в списке предметов отладки (фоновое задание должно быть запущено) и подключите его вручную, после чего точки останова в его коде начнут срабатывать.

Опасно ли включать отладку на рабочем сервере?

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

Как отключить режим отладки после завершения работы?

Уберите ключ -debug из строки запуска службы (в реестре Windows или в юните systemd на Linux) и перезапустите службу агента сервера 1С. Убедиться в результате можно по списку процессов: флаг в командной строке должен отсутствовать.

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

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