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

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

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

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

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

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

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

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

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

Включение отладки через параметр -debug в службе агента

Основной способ — добавить ключ -debug в параметры запуска службы «Агент сервера 1С:Предприятия». Откройте оснастку «Службы» (services.msc), найдите службу агента нужной версии платформы и остановите её. Затем откройте реестр и перейдите к разделу HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (имя может отличаться в зависимости от разрядности и порта).

В параметре ImagePath находится полная строка запуска. Добавьте в неё ключ -debug, а при использовании отладки по HTTP — также -http. Пример итоговой строки:

text
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http

Сохраните изменения и запустите службу. Альтернатива правке реестра — команда sc config с параметром binPath, но при ошибке в строке служба может не запуститься, поэтому перед изменением сохраните исходное значение ImagePath.

Выбор протокола отладки: TCP или HTTP

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

Сравнение протоколов

TCP

Подходит для отладки в локальной сети. Требует открытых портов кластера (1560–1591 по умолчанию) и общего сетевого имени сервера.

HTTP

Подходит для отладки через веб-сервер и ограниченные сети. Требует ключа -http у агента и включения HTTP-протокола в настройках конфигуратора.

Выбор протокола задаётся в конфигураторе: меню «Сервис → Параметры → Отладка», где указывается «Протокол отладки». Важно, чтобы протокол на стороне сервера (ключи запуска) и на стороне конфигуратора совпадали — иначе отладчик не найдёт серверные предметы отладки.

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

После перезапуска агента откройте конфигуратор и перейдите в «Сервис → Параметры → Отладка». Установите нужный протокол, убедитесь, что сервер отладки определяется автоматически или укажите имя сервера вручную. Для HTTP-отладки дополнительно проверьте адрес сервера отладки.

Затем откройте «Отладка → Подключение» и настройте автоматическое подключение. Включите флажки для типов предметов отладки, которые нужно перехватывать: «Сервер», «Фоновое задание», «HTTP-сервис», «Веб-сервис». Без этих флажков отладчик подключится только к клиентскому сеансу, и серверные точки останова не сработают.

Порядок действий
  1. 1
    Остановите службу агента сервера 1С и сохраните текущую строку запуска
  2. 2
    Добавьте в ImagePath ключи -debug и -http, запустите службу
  3. 3
    В конфигураторе выберите протокол отладки (TCP или HTTP)
  4. 4
    В окне «Подключение» включите автоматическое подключение к серверным вызовам и фоновым заданиям
  5. 5
    Запустите отладку, поставьте точку останова в серверном модуле и выполните действие в базе

Отладка фоновых заданий, веб-сервисов и файловых баз

Фоновые и регламентные задания выполняются на сервере вне пользовательского сеанса. Чтобы их отлаживать, включите автоматическое подключение к предмету отладки «Фоновое задание» и запустите задание принудительно — отладчик подхватит его при старте. Учтите, что задание должно запуститься именно на том кластере, где включён режим отладки.

Для HTTP- и веб-сервисов включите соответствующие типы предметов отладки и выполните внешний вызов сервиса. Если сервис опубликован на веб-сервере, убедитесь, что публикация указывает на кластер с включённой отладкой, а не на другой рабочий сервер.

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

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

Признак успешной настройки — в окне «Отладка → Подключение» появляются серверные предметы отладки, а выполнение кода останавливается на точке останова в серверном модуле. Если точка останова отображается с признаком недоступности (пустой кружок), отладчик не подключился к серверному процессу.

Типичные ошибки
01
Ключ -debug добавлен, но служба не перезапущена — режим отладки не активируется до перезапуска агента
02
Протокол в конфигураторе (TCP) не совпадает с ключами запуска сервера (-http) — серверные предметы отладки не появляются
03
Не включено автоматическое подключение к серверным вызовам — точки останова в серверных модулях игнорируются
04
Межсетевой экран блокирует порты кластера 1560–1591 — TCP-отладка недоступна с другого компьютера
05
Конфигуратор и сервер имеют разные версии платформы — подключение отладчика невозможно

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

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

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

Служба агента
Норма

Служба запущена, в строке запуска присутствует -debug

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

Служба не стартует после правки — проверьте синтаксис строки и верните исходное значение

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

Видны предметы отладки типа «Сервер» и «Фоновое задание»

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

В списке только клиентский сеанс — проверьте протокол и флажки автоподключения

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

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

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

Точка неактивна или код проходит мимо — серверный вызов не подключён к отладчику

Часто задаваемые вопросы

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

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

Почему точка останова в серверном модуле отображается пустым кружком?

Пустой значок означает, что код модуля ещё не загружен в подключённый предмет отладки или отладчик не подключился к серверному процессу. Проверьте флажки автоматического подключения в окне «Отладка → Подключение» и совпадение протокола отладки с ключами запуска сервера.

Опасно ли оставлять режим отладки на рабочем сервере?

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

Как отладить код, который выполняется под другим пользователем?

Включите автоматическое подключение к нужным типам предметов отладки и попросите пользователя выполнить действие в базе — отладчик перехватит его серверный сеанс. Альтернатива — запустить сеанс от имени этого пользователя через «Отладка → Начать отладку» с указанием учётной записи.

Работает ли отладка через веб-сервер при публикации базы?

Да, для этого используется протокол HTTP: агент сервера запускается с ключами -debug и -http, а в конфигураторе выбирается HTTP-протокол и указывается адрес сервера отладки. TCP-отладка через публикацию на веб-сервере не работает.

Что делать, если после правки реестра служба агента не запускается?

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

Итог

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

Серверная отладка включается ключом -debug в строке запуска службы агента с последующим перезапуском службы. Протокол (TCP или HTTP) должен совпадать на сервере и в конфигураторе, а в окне подключения нужно разрешить автоматическое подключение к серверным вызовам и фоновым заданиям. На продуктивном сервере режим отладки держите включённым только на время диагностики.