Администрирование · 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. Пример итоговой строки:
"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 появился в более поздних версиях платформы и удобен, когда между конфигуратором и сервером есть межсетевые экраны или отладка ведётся через публикацию на веб-сервере.
Сравнение протоколов
Подходит для отладки в локальной сети. Требует открытых портов кластера (1560–1591 по умолчанию) и общего сетевого имени сервера.
Подходит для отладки через веб-сервер и ограниченные сети. Требует ключа -http у агента и включения HTTP-протокола в настройках конфигуратора.
Выбор протокола задаётся в конфигураторе: меню «Сервис → Параметры → Отладка», где указывается «Протокол отладки». Важно, чтобы протокол на стороне сервера (ключи запуска) и на стороне конфигуратора совпадали — иначе отладчик не найдёт серверные предметы отладки.
Настройка конфигуратора для подключения к серверу
После перезапуска агента откройте конфигуратор и перейдите в «Сервис → Параметры → Отладка». Установите нужный протокол, убедитесь, что сервер отладки определяется автоматически или укажите имя сервера вручную. Для HTTP-отладки дополнительно проверьте адрес сервера отладки.
Затем откройте «Отладка → Подключение» и настройте автоматическое подключение. Включите флажки для типов предметов отладки, которые нужно перехватывать: «Сервер», «Фоновое задание», «HTTP-сервис», «Веб-сервис». Без этих флажков отладчик подключится только к клиентскому сеансу, и серверные точки останова не сработают.
- 1Остановите службу агента сервера 1С и сохраните текущую строку запуска
- 2Добавьте в ImagePath ключи -debug и -http, запустите службу
- 3В конфигураторе выберите протокол отладки (TCP или HTTP)
- 4В окне «Подключение» включите автоматическое подключение к серверным вызовам и фоновым заданиям
- 5Запустите отладку, поставьте точку останова в серверном модуле и выполните действие в базе
Отладка фоновых заданий, веб-сервисов и файловых баз
Фоновые и регламентные задания выполняются на сервере вне пользовательского сеанса. Чтобы их отлаживать, включите автоматическое подключение к предмету отладки «Фоновое задание» и запустите задание принудительно — отладчик подхватит его при старте. Учтите, что задание должно запуститься именно на том кластере, где включён режим отладки.
Для HTTP- и веб-сервисов включите соответствующие типы предметов отладки и выполните внешний вызов сервиса. Если сервис опубликован на веб-сервере, убедитесь, что публикация указывает на кластер с включённой отладкой, а не на другой рабочий сервер.
В файловом режиме всё проще: сервер не используется, и достаточно запустить отладку из конфигуратора — весь код, включая «серверные» процедуры, выполняется в одном процессе и доступен отладчику без дополнительных настроек.
Проверка результата и типичные ошибки
Признак успешной настройки — в окне «Отладка → Подключение» появляются серверные предметы отладки, а выполнение кода останавливается на точке останова в серверном модуле. Если точка останова отображается с признаком недоступности (пустой кружок), отладчик не подключился к серверному процессу.
Отдельная частая ситуация — отладка под пользователем без административных прав на сервере. Для подключения отладчика к кластеру учётной записи разработчика должны хватать прав на сетевой доступ к серверу; при использовании аутентификации кластера проверьте, что администратор кластера задан корректно или не требуется.
Как проверить результат
Служба запущена, в строке запуска присутствует -debug
Служба не стартует после правки — проверьте синтаксис строки и верните исходное значение
Видны предметы отладки типа «Сервер» и «Фоновое задание»
В списке только клиентский сеанс — проверьте протокол и флажки автоподключения
Выполнение останавливается, доступны переменные и стек вызовов
Точка неактивна или код проходит мимо — серверный вызов не подключён к отладчику
Часто задаваемые вопросы
Можно ли включить отладку без перезапуска службы агента?
Нет. Параметр -debug считывается только при старте процесса ragent, поэтому перезапуск службы обязателен. Запланируйте его на время минимальной нагрузки, так как все сеансы пользователей будут разорваны.
Почему точка останова в серверном модуле отображается пустым кружком?
Пустой значок означает, что код модуля ещё не загружен в подключённый предмет отладки или отладчик не подключился к серверному процессу. Проверьте флажки автоматического подключения в окне «Отладка → Подключение» и совпадение протокола отладки с ключами запуска сервера.
Опасно ли оставлять режим отладки на рабочем сервере?
Для данных это безопасно, но производительность серверных вызовов заметно падает, а кластер становится доступен для подключения отладчиком из сети. На продуктивных системах режим отладки включают только на время диагностики, затем убирают ключ и перезапускают службу.
Как отладить код, который выполняется под другим пользователем?
Включите автоматическое подключение к нужным типам предметов отладки и попросите пользователя выполнить действие в базе — отладчик перехватит его серверный сеанс. Альтернатива — запустить сеанс от имени этого пользователя через «Отладка → Начать отладку» с указанием учётной записи.
Работает ли отладка через веб-сервер при публикации базы?
Да, для этого используется протокол HTTP: агент сервера запускается с ключами -debug и -http, а в конфигураторе выбирается HTTP-протокол и указывается адрес сервера отладки. TCP-отладка через публикацию на веб-сервере не работает.
Что делать, если после правки реестра служба агента не запускается?
Чаще всего причина — ошибка в строке запуска: лишний пробел, потерянная кавычка или неверный путь. Верните сохранённое исходное значение ImagePath, убедитесь, что служба стартует, и повторите правку, добавляя ключи аккуратно в конец строки параметров.
Что важно запомнить
Серверная отладка включается ключом -debug в строке запуска службы агента с последующим перезапуском службы. Протокол (TCP или HTTP) должен совпадать на сервере и в конфигураторе, а в окне подключения нужно разрешить автоматическое подключение к серверным вызовам и фоновым заданиям. На продуктивном сервере режим отладки держите включённым только на время диагностики.