Администрирование · 11 мин
Как включить отладчик на сервере 1С
Как включить отладку на сервере 1С:Предприятие: параметр -debug, настройка службы агента, отладка через конфигуратор, частые ошибки и проверка результата.
Отладка серверного кода — одна из базовых задач администратора и разработчика 1С. Когда информационная база работает в клиент-серверном режиме, вся бизнес-логика, помеченная директивами «НаСервере», выполняется процессами рабочего сервера, и обычный запуск отладки из конфигуратора её не перехватывает. Чтобы точки останова в серверных процедурах начали срабатывать, сервер 1С нужно запустить в отладочном режиме.
Ключевой механизм — параметр -debug, который передаётся агенту сервера 1С:Предприятия при старте. Без него рабочие процессы не публикуют отладочную информацию, и конфигуратор просто не видит серверные предметы отладки. Способ включения зависит от операционной системы сервера (Windows или Linux) и от того, как именно запущен агент — как служба или как приложение.
Важно понимать: включение отладки на рабочем сервере снижает производительность и увеличивает потребление памяти, поэтому на продуктивных системах отладочный режим включают временно — на период поиска и исправления ошибки. Ниже разобраны все способы включения, настройка подключения в конфигураторе, проверка результата и типичные проблемы.
Когда серверная отладка действительно нужна
Не всякий код требует включения отладки на сервере. Если база файловая, серверный вызов эмулируется внутри клиентского процесса, и отладка работает без дополнительных настроек. Отладочный режим агента сервера необходим только в клиент-серверном варианте работы, когда код выполняется рабочими процессами rphost.
Типичные ситуации, когда без серверной отладки не обойтись: ошибка возникает в процедуре с директивой &НаСервере, в модуле менеджера объекта, в фоновом задании или в регламентном задании. Также серверная отладка нужна при анализе обменов данными, веб-сервисов и HTTP-сервисов, опубликованных на сервере 1С.
Код «НаСервере» выполняется в клиентском процессе, включайте обычную отладку
Проверьте строку запуска службы агента сервера
Проверьте настройки конфигуратора и тип подключаемых предметов отладки
Включение отладки на сервере под Windows
В Windows агент сервера 1С обычно работает как служба «Агент сервера 1С:Предприятия». Чтобы включить отладочный режим, нужно изменить параметры запуска этой службы. Самый надёжный способ — правка реестра: откройте редактор реестра и найдите ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\, внутри неё — раздел службы агента (его имя зависит от версии платформы, например 1C:Enterprise 8.3 Server Agent с указанием портов).
В параметре ImagePath находится полная строка запуска агента. Добавьте в неё ключ -debug после существующих параметров, не удаляя уже имеющиеся значения -srvc, -agent, -regport и других. Строка приобретёт примерно такой вид: "C:\Program Files\1cv8\...\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug.
После правки реестра перезапустите службу через «Службы» (services.msc) или командной строкой. Без перезапуска изменения не применятся — агент читает параметры только при старте. Учтите, что перезапуск службы разрывает сеансы пользователей, поэтому на продуктивном сервере операцию планируйте на время минимальной нагрузки.
- 1Откройте редактор реестра и найдите раздел службы агента сервера 1С
- 2В параметре ImagePath добавьте ключ -debug в конец строки запуска
- 3Сохраните изменение и перезапустите службу агента сервера
- 4Убедитесь, что служба стартовала без ошибок
- 5В конфигураторе включите отладку и подключите серверные предметы отладки
Альтернатива: запуск агента как приложения
Для временной диагностики службу можно остановить и запустить агент вручную из командной строки с нужными параметрами, включая -debug. Такой способ удобен тем, что не требует правки реестра и легко откатывается: после завершения диагностики консоль закрывается, а служба запускается в штатном режиме. Минус — агент привязан к сеансу пользователя и завершится при выходе из системы.
Включение отладки на сервере под Linux
На Linux-сервере агент 1С запускается либо через systemd-юнит, либо скриптом. В первом случае откройте unit-файл службы (обычно находится в /etc/systemd/system/) и в директиве ExecStart добавьте параметр -debug к строке запуска ragent. После правки выполните перечитывание конфигурации и перезапуск службы.
systemctl daemon-reload && systemctl restart srv1cv8Если агент запускается скриптом, найдите в скрипте строку вызова ragent и допишите -debug к перечню аргументов, затем перезапустите процесс. Как и в Windows, перезапуск разорвёт активные соединения пользователей — предупредите их заранее или выберите окно обслуживания.
Для проверки, что агент стартовал в отладочном режиме, посмотрите список процессов: в командной строке процесса ragent должен присутствовать ключ -debug. Это самый быстрый способ убедиться, что параметр действительно применился.
ps aux | grep ragentНастройка конфигуратора для серверной отладки
Включение отладочного режима на сервере — только половина задачи. В конфигураторе откройте меню «Отладка» → «Настройка» и убедитесь, что выбран протокол отладки «Отладка по протоколу TCP/IP» — именно он используется для клиент-серверного варианта. Устаревший вариант по именованным каналам для серверной отладки не подходит.
Далее запустите отладку (F5) или подключитесь к уже работающим процессам через «Отладка» → «Подключение». В окне подключения отметьте нужные типы предметов отладки: «Сервер», «Фоновое задание», «HTTP-сервис» и другие — в зависимости от того, какой код анализируете. Если нужный тип не отмечен, точки останова в соответствующих модулях срабатывать не будут, даже при корректно настроенном сервере.
Если конфигуратор и сервер находятся на разных машинах, проверьте сетевую доступность: отладочные соединения используют порты рабочих процессов (по умолчанию диапазон 1560–1591) и порт 1540. Брандмауэр на сервере и промежуточные сетевые экраны должны пропускать этот трафик, иначе конфигуратор не увидит предметы отладки.
Проверка результата и признаки корректной работы
После всех настроек выполните контрольную проверку. Поставьте точку останова в любой серверной процедуре, которая гарантированно вызывается, — например, в обработчике записи документа, — и выполните действие в клиентском приложении. Если конфигуратор остановился на точке и показывает стек вызовов и значения переменных, серверная отладка работает.
Если остановки нет, двигайтесь по цепочке: проверьте наличие -debug в строке запуска агента, убедитесь, что служба перезапущена после правки, проверьте протокол отладки и подключённые типы предметов отладки в конфигураторе, затем — сетевую доступность портов. Чаще всего причина кроется в одном из первых двух пунктов.
Как проверить результат
В параметрах процесса ragent присутствует -debug
Ключа нет — правка не применилась или служба не перезапущена
Видны серверные предметы отладки и рабочие процессы
Список пуст — проблема с сетью или отладочный режим не включён
Выполнение останавливается, видны переменные
Точка игнорируется — не подключён нужный тип предмета отладки
Риски, ограничения и безопасное завершение работы
Отладочный режим заметно нагружает сервер: рабочие процессы обмениваются дополнительной служебной информацией, растёт время выполнения серверных вызовов и потребление памяти. На продуктивной системе с большим числом пользователей это может привести к видимому замедлению работы. Поэтому действует простое правило: включил — отладил — выключил.
Отдельный риск — остановка выполнения на точке останова в продуктивной базе. Пока серверный вызов стоит на паузе, транзакция удерживает блокировки, и другие пользователи могут получить ошибки ожидания. Для длительного анализа лучше использовать копию базы на тестовом сервере, где отладочный режим можно держать включённым постоянно.
После завершения работ уберите ключ -debug из строки запуска службы и перезапустите агент. Проверьте по списку процессов, что параметр исчез, — это гарантия возврата к штатному режиму.
Частые вопросы
Можно ли включить отладку на сервере без перезапуска службы?
Нет. Параметр -debug агент сервера считывает только при старте, поэтому перезапуск службы обязателен. Чтобы минимизировать простой, операцию выполняют в часы минимальной нагрузки, предупредив пользователей о разрыве сеансов.
Отладка включена, но точка останова в серверной процедуре не срабатывает. Что проверить?
В первую очередь — подключены ли нужные типы предметов отладки в окне «Отладка → Подключение». Затем убедитесь, что код действительно выполняется на сервере (директива &НаСервере), выбран протокол TCP/IP и процедура вообще вызывается в текущем сценарии.
Нужен ли -debug для отладки фоновых заданий?
Да, для клиент-серверной базы фоновые задания выполняются рабочими процессами сервера, поэтому отладочный режим агента обязателен. Дополнительно в конфигураторе нужно подключить предмет отладки типа «Фоновое задание» — без этого остановки не будет.
Насколько отладочный режим замедляет сервер?
Точных универсальных цифр нет — нагрузка зависит от интенсивности серверных вызовов и числа сеансов. Практика показывает, что замедление ощутимо на загруженных системах, поэтому на продуктиве режим включают только на время диагностики и отключают сразу после.
Можно ли отлаживать серверный код через веб-клиент?
Да. Если прикладное решение опубликовано на веб-сервере, отладка настраивается в конфигураторе через пункт автоматического подключения или явное указание предметов отладки веб-клиента. Серверный код при этом по-прежнему требует запущенного с -debug агента сервера 1С.
Как отладить HTTP-сервис, вызов которого приходит извне?
Включите отладочный режим на сервере, в конфигураторе подключите тип предмета отладки «HTTP-сервис» и инициируйте внешний вызов. Выполнение остановится на точке останова в модуле сервиса. Учтите, что вызывающая сторона в это время будет ждать ответа и может завершиться по таймауту.
Что важно запомнить
Серверная отладка в клиент-серверной 1С включается параметром -debug в строке запуска агента сервера с обязательным перезапуском службы. В конфигураторе выбирается протокол TCP/IP и подключаются нужные типы предметов отладки. После диагностики отладочный режим на продуктивном сервере следует выключить.