Ситуация, когда точка останова в процедуре с префиксом &НаСервере или в серверном модуле не срабатывает, знакома многим разработчикам. При этом в клиентском коде отладка может работать исправно. Разберем по шагам, почему это происходит и как настроить сервер 1С для полноценной работы отладчика.
Первым делом проанализируем настройки самой службы 1С:Предприятия. По умолчанию отладка на сервере выключена в целях производительности. Для её включения необходимо добавить специальный ключ в строку запуска службы.
Рассмотрим порядок действий для Windows-сервера:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent... (имя ветки зависит от версии и экземпляра сервера).ImagePath.-debug.Важный нюанс: часто возникают споры о том, использовать дефис (-debug) или прямой слэш (/debug). На практике, как показывают обсуждения специалистов, платформа воспринимает оба варианта. Однако критически важно после внесения изменений выполнить полный перезапуск службы сервера 1С через консоль services.msc. Без перезапуска новые параметры не вступят в силу.
Начиная с версии 8.3.7, платформа поддерживает два режима отладки. Выясним, какой из них подходит в вашем случае.
Отладка по протоколу TCP: используется по умолчанию при наличии ключа -debug. В этом режиме серверный процесс rphost сам инициирует соединение с вашим Конфигуратором. Это отлично работает в локальной сети, но часто вызывает проблемы, если между сервером и компьютером разработчика есть брандмауэр или VPN.
Отладка по протоколу HTTP: включается связкой ключей -debug -http. В этом режиме используется специальный сервис отладки. Рассмотрим пример строки запуска для HTTP-отладки:
"C:\Program Files\1cv8\8.3.18.1208\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
Если вы решили использовать HTTP-отладку, не забудьте изменить настройки в самом Конфигураторе: Сервис — Параметры — Отладка, выберите протокол HTTP и при необходимости укажите адрес сервера отладки.
Проанализируем ситуацию: флаг установлен, служба перезапущена, но отладка на сервере всё равно не "залетает". Одной из самых частых причин является блокировка входящих соединений на стороне клиентского компьютера (машины разработчика).
При использовании TCP-отладки сервер пытается "постучаться" к вам на порты из диапазона 1560–1591. Если при первом запуске 1С вы случайно нажали "Отмена" в окне системного брандмауэра Windows с запросом разрешений для 1cv8.exe, отладка работать не будет. Нам необходимо:
1cv8.exe.Иногда проблема кроется не в настройках сервера, а в контексте выполнения кода. Серверные процедуры часто вызываются внутри фоновых заданий. По умолчанию отладчик их игнорирует. Рассмотрим, как это исправить:
Без этих настроек, даже при идеально настроенном сервере, точки останова в фоновых заданиях срабатывать не будут.
Посмотрим на ситуацию, когда всё настроено верно, но отладка работает нестабильно на релизах типа 8.3.18.1208. В некоторых версиях платформы наблюдались внутренние ошибки механизма отладки.
Разберем дополнительные меры спасения:
snccntxt (находится внутри каталога srvinfo на сервере). В крайнем случае, можно остановить службу, удалить содержимое этой папки и запустить службу снова.hosts на сервере.Подводя итог, можно сказать, что решение проблемы серверной отладки — это всегда последовательная проверка цепочки: Ключ в реестре -> Перезапуск службы -> Разрешение в брандмауэре -> Настройка автоматического подключения в Конфигураторе. Выполнив эти действия, мы гарантированно получим работающий инструмент для анализа кода.