Разработка и Конфигурация · 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. Такой вариант удобен для временной отладки на тестовом стенде, но не подходит для постоянной работы.
"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С:Предприятия
- 2Добавьте ключ -debug в строку запуска службы (реестр Windows или юнит systemd в Linux)
- 3Запустите службу и убедитесь, что процесс стартовал с флагом -debug
- 4Откройте конфигуратор, установите точку останова в серверной процедуре
- 5Выполните Отладка → Начать отладку и воспроизведите действие, вызывающее серверный код
- 6Убедитесь, что выполнение остановилось на точке останова
Настройка конфигуратора для серверной отладки
Запущенного в режиме отладки сервера недостаточно — конфигуратор должен подключиться к правильному предмету отладки. Откройте меню «Отладка» и проверьте настройки подключения: для клиент-серверной базы тип подключения должен быть «Сервер 1С:Предприятия», а не «Файловый информационная база».
Через пункт «Отладка → Подключение» можно увидеть список доступных предметов отладки. В нём должны отображаться серверные процессы вашей базы. Если список пуст, значит, либо сервер не в режиме отладки, либо сеанс пользователя ещё не запущен — сначала запустите клиентское приложение, затем обновите список.
Точку останова установите в нужной строке серверной процедуры (клик по полю слева от строки или клавиша F9). Обратите внимание на директивы компиляции: код внутри &НаСервере, серверных общих модулей и модулей объектов выполняется на сервере, а код &НаКлиенте — нет. Точка в клиентском коде отладится и без серверной отладки, что иногда маскирует проблему.
Проверка, что отладка сервера работает
Самый надёжный способ проверки — поставить точку останова в заведомо выполняемой серверной процедуре, например в обработчике записи документа или в серверной функции общего модуля, и выполнить соответствующее действие в клиенте. Если выполнение остановилось и конфигуратор показал стек вызовов — серверная отладка работает.
Если точка не сработала, проверьте по цепочке: запущен ли сервер с ключом -debug, перезапускалась ли служба после изменения параметров, подключён ли конфигуратор к нужной базе и сеансу, не отключена ли точка останова (серый значок вместо красного) и действительно ли выполняется этот код — возможно, условие в программе не даёт дойти до нужной строки.
Полезно также проверить, что версия платформы конфигуратора совпадает с версией сервера. Разнобой версий — частая причина того, что отладчик не видит серверные процессы или подключение обрывается.
Как проверить результат
В командной строке процесса есть флаг -debug
Флага нет — служба запущена без отладки
Видны серверные сеансы базы
Список пуст или содержит только локальные процессы
Выполнение останавливается, виден стек вызовов
Точка пропускается, код выполняется без остановки
Типичные ошибки и ограничения
Наиболее распространённая ошибка — изменить строку запуска службы, но забыть её перезапустить. Вторая по частоте — отладка не той базы: на сервере несколько баз, а сеанс открыт в другой. Третья — попытка отладить код, который выполняется в фоновом задании или веб-сервисе, без ручного подключения к этому сеансу.
Помните и об ограничениях: режим отладки снижает производительность сервера, поэтому после завершения работ его следует отключить, вернув исходную строку запуска и перезапустив службу. Кроме того, остановленная на точке останова серверная процедура удерживает соединение и может приводить к тайм-аутам у клиента — не оставляйте сеанс на паузе надолго.
Если доступа к настройкам сервера нет (например, сервер администрирует другая команда), используйте альтернативы: журнал регистрации с выводом диагностических сообщений, технологический журнал или перенос проблемного участка в файловую копию базы, где серверная отладка не требуется.
Что важно запомнить
Точка останова на сервере работает только при запуске сервера 1С с ключом -debug и перезапуске службы. В конфигураторе нужно выбрать правильный тип подключения и при необходимости вручную подключить сеансы фоновых заданий и сервисов. После завершения отладки режим следует отключить, чтобы не снижать производительность сервера.
Частые вопросы
Почему точка останова отображается, но выполнение не останавливается?
Чаще всего сервер запущен без ключа -debug либо служба не перезапускалась после изменения параметров. Также проверьте, что код действительно выполняется: условие в программе может не приводить к нужной строке, а сеанс может работать на другом рабочем сервере кластера.
Нужен ли режим отладки для файловой базы?
Нет. В файловом варианте весь код выполняется в одном процессе на компьютере разработчика, и точки останова в серверных процедурах работают без какой-либо настройки сервера.
Как отладить фоновое задание или веб-сервис?
Такие сеансы не подключаются автоматически. Откройте «Отладка → Подключение», дождитесь появления нужного сеанса в списке предметов отладки (фоновое задание должно быть запущено) и подключите его вручную, после чего точки останова в его коде начнут срабатывать.
Опасно ли включать отладку на рабочем сервере?
Да, это нежелательно. Режим отладки замедляет выполнение серверного кода, а остановка по точке останова блокирует сеанс реального пользователя и может вызвать тайм-ауты. Для продуктивной базы используйте копию или тестовый стенд.
Как отключить режим отладки после завершения работы?
Уберите ключ -debug из строки запуска службы (в реестре Windows или в юните systemd на Linux) и перезапустите службу агента сервера 1С. Убедиться в результате можно по списку процессов: флаг в командной строке должен отсутствовать.
Можно ли отладить серверный код без доступа к настройкам сервера?
Без включения режима отладки на сервере полноценная пошаговая отладка невозможна. Как обходные варианты используйте вывод диагностики в журнал регистрации, анализ технологического журнала или воспроизведение проблемы на файловой копии базы.