Ситуация, когда точки останова срабатывают в клиентских процедурах &НаКлиенте, но игнорируются в серверных &НаСервере или в модулях объектов, является одной из самых распространенных проблем при настройке рабочего окружения разработчика 1С. Это особенно критично при работе с тяжелыми конфигурациями, такими как 1С:Комплексная автоматизация 2.4 или ERP, где основная бизнес-логика сосредоточена именно на стороне сервера.
В этой статье мы подробно проанализируем причины возникновения этой проблемы, разберем различия в настройке для файлового и клиент-серверного вариантов работы и изучим современные методы отладки по протоколу HTTP.
Прежде чем приступать к глубоким настройкам системы, нам необходимо выяснить, в каком режиме запущена база. Это ключевой момент, так как методы включения отладки для файлового и клиент-серверного вариантов кардинально различаются. Проанализируем ситуацию: если вы пытаетесь найти службу 1C:Enterprise 8.3 Server Agent (ragent) в списке служб Windows и не находите ее, или ее настройка не дает результата, скорее всего, вы работаете в файловом режиме.
В файловом режиме серверные вызовы эмулируются самой платформой внутри одного процесса 1cv8.exe. Настройка службы ragent в этом случае абсолютно бессмысленна, так как она просто не участвует в работе вашей базы.
Если ваша база находится в файловом варианте (путь к базе начинается с File=...), выполним следующие шаги для включения отладки серверного кода:
Эти действия заставляют платформу при запуске сеанса «Предприятия» из конфигуратора автоматически переходить в режим, позволяющий отладчику перехватывать выполнение кода в серверных контекстах. Если после этих настроек точки останова все еще не срабатывают, попробуйте зайти в меню Отладка — Подключение и проверить, отображается ли ваш сеанс в списке доступных предметов отладки.
В клиент-серверном варианте за выполнение серверного кода отвечает отдельный процесс — rmngr.exe или rphost.exe, управляемые службой агента сервера. По умолчанию отладка на сервере выключена для экономии ресурсов. Чтобы ее включить, нам нужно добавить параметр -debug в строку запуска службы.
Рассмотрим пошагово, как это сделать через реестр Windows, так как это самый надежный способ:
Win + R, введем regedit и нажмем Enter.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent... (название может меняться в зависимости от версии платформы).ImagePath.-debug.Пример правильной строки запуска службы:
"C:\Program Files\1cv8\8.3.19.1264\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Важно: После изменения реестра необходимо обязательно перезапустить службу 1С:Предприятия через консоль services.msc, чтобы изменения вступили в силу.
Начиная с версии платформы 8.3.7, разработчики 1С добавили возможность отладки по протоколу HTTP вместо классического TCP. Это решает массу проблем, связанных с блокировками портов брандмауэрами и нестабильной работой в сложных сетях. Проанализируем, как переключиться на этот современный метод.
Для настройки сервера 1С нам необходимо в ту же строку запуска службы (в реестре), где мы прописывали -debug, добавить параметр -http. Это укажет серверу использовать HTTP-отладку.
Затем выполним настройку в самом Конфигураторе:
Использование HTTP-отладки позволяет избежать проблем с динамическим диапазоном портов TCP, который часто блокируется антивирусами.
Иногда разработчик сталкивается с тем, что обычный серверный код отлаживается, а код, запущенный через ФоновыеЗадания.Выполнить(), — нет. Выясним причину: фоновые задания выполняются в отдельных сеансах, к которым отладчик не подключается автоматически.
Чтобы исправить это, в Конфигураторе выполним следующие действия:
Теперь, как только на сервере стартует фоновое задание, отладчик «подцепит» его, и выполнение остановится на нужной точке останова.
Если все параметры прописаны, но отладка не работает, проанализируем состояние сетевой защиты. При использовании TCP-отладки сервер 1С использует порты из диапазона 1560–1591. Разберем, что нужно сделать:
1cv8.exe, ragent.exe, rmngr.exe и rphost.exe.C:\Windows\System32\drivers\etc\hosts.
127.0.0.1 localhost
192.168.1.10 my-server-name
В редких случаях проблема кроется в поврежденных временных файлах сессий отладки. Рассмотрим процедуру очистки:
%LocalAppData%\1C\1cv8\.8e2...) и внутри них найдем папку dbgs.Это сбросит настройки текущих подключений отладчика и поможет устранить «глюки», когда отладка работала вчера, но перестала сегодня без видимых причин.
Подводя итог, можно сказать, что решение проблемы с серверной отладкой в 1С 8.3 почти всегда сводится к трем вещам: правильному определению режима работы базы (файловая/серверная), корректному указанию ключа -debug и настройке автоматического подключения к фоновым заданиям. Помните, что современные версии платформы работают стабильнее через протокол HTTP, поэтому рекомендуем использовать именно его.