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

Администрирование · 11 мин

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

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

Отладка серверного кода — одна из базовых задач администратора и разработчика 1С. Когда информационная база работает в клиент-серверном режиме, вся бизнес-логика, помеченная директивами «НаСервере», выполняется процессами рабочего сервера, и обычный запуск отладки из конфигуратора её не перехватывает. Чтобы точки останова в серверных процедурах начали срабатывать, сервер 1С нужно запустить в отладочном режиме.

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

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

Когда серверная отладка действительно нужна

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

Типичные ситуации, когда без серверной отладки не обойтись: ошибка возникает в процедуре с директивой &НаСервере, в модуле менеджера объекта, в фоновом задании или в регламентном задании. Также серверная отладка нужна при анализе обменов данными, веб-сервисов и HTTP-сервисов, опубликованных на сервере 1С.

База файловаяОтладка сервера не требуется

Код «НаСервере» выполняется в клиентском процессе, включайте обычную отладку

База клиент-сервернаяНужен параметр -debug

Проверьте строку запуска службы агента сервера

Точка останова не срабатываетОтладочный режим не включён или предмет отладки не подключён

Проверьте настройки конфигуратора и тип подключаемых предметов отладки

Включение отладки на сервере под 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) или командной строкой. Без перезапуска изменения не применятся — агент читает параметры только при старте. Учтите, что перезапуск службы разрывает сеансы пользователей, поэтому на продуктивном сервере операцию планируйте на время минимальной нагрузки.

Порядок действий в Windows
  1. 1
    Откройте редактор реестра и найдите раздел службы агента сервера 1С
  2. 2
    В параметре ImagePath добавьте ключ -debug в конец строки запуска
  3. 3
    Сохраните изменение и перезапустите службу агента сервера
  4. 4
    Убедитесь, что служба стартовала без ошибок
  5. 5
    В конфигураторе включите отладку и подключите серверные предметы отладки

Альтернатива: запуск агента как приложения

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

Включение отладки на сервере под Linux

На Linux-сервере агент 1С запускается либо через systemd-юнит, либо скриптом. В первом случае откройте unit-файл службы (обычно находится в /etc/systemd/system/) и в директиве ExecStart добавьте параметр -debug к строке запуска ragent. После правки выполните перечитывание конфигурации и перезапуск службы.

bash
systemctl daemon-reload && systemctl restart srv1cv8

Если агент запускается скриптом, найдите в скрипте строку вызова ragent и допишите -debug к перечню аргументов, затем перезапустите процесс. Как и в Windows, перезапуск разорвёт активные соединения пользователей — предупредите их заранее или выберите окно обслуживания.

Для проверки, что агент стартовал в отладочном режиме, посмотрите список процессов: в командной строке процесса ragent должен присутствовать ключ -debug. Это самый быстрый способ убедиться, что параметр действительно применился.

bash
ps aux | grep ragent

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

Включение отладочного режима на сервере — только половина задачи. В конфигураторе откройте меню «Отладка» → «Настройка» и убедитесь, что выбран протокол отладки «Отладка по протоколу TCP/IP» — именно он используется для клиент-серверного варианта. Устаревший вариант по именованным каналам для серверной отладки не подходит.

Далее запустите отладку (F5) или подключитесь к уже работающим процессам через «Отладка» → «Подключение». В окне подключения отметьте нужные типы предметов отладки: «Сервер», «Фоновое задание», «HTTP-сервис» и другие — в зависимости от того, какой код анализируете. Если нужный тип не отмечен, точки останова в соответствующих модулях срабатывать не будут, даже при корректно настроенном сервере.

Если конфигуратор и сервер находятся на разных машинах, проверьте сетевую доступность: отладочные соединения используют порты рабочих процессов (по умолчанию диапазон 1560–1591) и порт 1540. Брандмауэр на сервере и промежуточные сетевые экраны должны пропускать этот трафик, иначе конфигуратор не увидит предметы отладки.

Проверка результата и признаки корректной работы

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

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

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

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

Строка запуска агента
Норма

В параметрах процесса ragent присутствует -debug

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

Ключа нет — правка не применилась или служба не перезапущена

Окно подключения в конфигураторе
Норма

Видны серверные предметы отладки и рабочие процессы

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

Список пуст — проблема с сетью или отладочный режим не включён

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

Выполнение останавливается, видны переменные

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

Точка игнорируется — не подключён нужный тип предмета отладки

Риски, ограничения и безопасное завершение работы

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

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

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

Типичные ошибки
01
Добавили -debug, но не перезапустили службу — параметр не применился, отладка не работает
02
Выбран протокол отладки по именованным каналам — серверные предметы отладки недоступны в клиент-серверном режиме
03
Не подключён тип «Фоновое задание» — точки останова в регламентных заданиях игнорируются
04
Закрыты порты на брандмауэре — конфигуратор на другой машине не видит предметы отладки
05
Забыли выключить отладочный режим после работ — сервер постоянно работает с пониженной производительностью

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

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

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

Отладка включена, но точка останова в серверной процедуре не срабатывает. Что проверить?

В первую очередь — подключены ли нужные типы предметов отладки в окне «Отладка → Подключение». Затем убедитесь, что код действительно выполняется на сервере (директива &НаСервере), выбран протокол TCP/IP и процедура вообще вызывается в текущем сценарии.

Нужен ли -debug для отладки фоновых заданий?

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

Насколько отладочный режим замедляет сервер?

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

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

Да. Если прикладное решение опубликовано на веб-сервере, отладка настраивается в конфигураторе через пункт автоматического подключения или явное указание предметов отладки веб-клиента. Серверный код при этом по-прежнему требует запущенного с -debug агента сервера 1С.

Как отладить HTTP-сервис, вызов которого приходит извне?

Включите отладочный режим на сервере, в конфигураторе подключите тип предмета отладки «HTTP-сервис» и инициируйте внешний вызов. Выполнение остановится на точке останова в модуле сервиса. Учтите, что вызывающая сторона в это время будет ждать ответа и может завершиться по таймауту.

Итог

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

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