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

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

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

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

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

Есть два способа включить отладку: через консоль управления кластером (без перезапуска службы) и через параметр командной строки -debug при запуске агента сервера. Оба подхода рабочие, но отличаются по удобству и области применения. Ниже разобраны оба варианта для Windows и Linux, а также настройка конфигуратора и проверка результата.

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

Что проверить перед включением отладки

Сначала определите, где именно выполняется проблемный код. Если процедура помечена директивой &НаСервере, выполняется в фоновом задании или вызывается через веб-сервис — нужна серверная отладка. Если код работает в клиентском контексте тонкого или толстого клиента, достаточно обычной отладки из конфигуратора без настройки кластера.

Проверьте версию платформы на сервере и на компьютере разработчика — они должны совпадать или быть совместимыми, иначе конфигуратор не увидит предметы отладки. Также убедитесь, что между машиной разработчика и сервером открыты порты кластера (по умолчанию диапазон 1540–1591, порт отладки обычно 1550, но зависит от настроек).

Ошибка только в серверных процедурахНужна серверная отладка

Включайте отладку на кластере

Ошибка в фоновом заданииОтладка фоновых заданий

Потребуется подключение к фоновому заданию из списка предметов отладки

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

Запускайте отладку прямо из конфигуратора

Работа через веб-серверОтладка по HTTP

Настройте публикацию с параметром debug

Включение отладки через консоль кластера

Самый быстрый способ — консоль управления кластером серверов 1С. Откройте оснастку «Администрирование серверов 1С Предприятия» на сервере или на машине администратора. Раскройте нужный кластер, кликните правой кнопкой по его имени и выберите «Свойства».

В списке свойств найдите параметр «Разрешена отладка» и установите значение «Да». При необходимости укажите порт отладки и диапазон портов. Нажмите «ОК» — изменения применяются без перезапуска службы агента, что удобно для продуктивных систем, где нельзя останавливать работу пользователей.

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

Порядок действий в консоли кластера
  1. 1
    Откройте консоль «Администрирование серверов 1С»
  2. 2
    Найдите нужный кластер и откройте его «Свойства»
  3. 3
    Установите «Разрешена отладка» = Да
  4. 4
    При необходимости укажите порт отладки
  5. 5
    Сохраните изменения и проверьте подключение из конфигуратора

Включение отладки через параметр -debug

Второй способ — запуск агента сервера с ключом -debug. Он используется, когда консоль недоступна или настройку нужно зафиксировать постоянно, например на тестовом сервере разработки.

На Windows

Остановите службу «Агент сервера 1С:Предприятия». Откройте реестр и найдите ветку службы в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services — имя службы содержит версию платформы. В параметре ImagePath добавьте к строке запуска ключ -debug. Затем запустите службу заново.

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

На Linux

Остановите сервис, отредактируйте скрипт запуска (обычно /etc/init.d/srv1cv8 или unit-файл systemd), добавив -debug в строку параметров запуска ragent, и запустите сервис снова. После правки unit-файла выполните systemctl daemon-reload.

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

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

Запустите отладку клавишей F5 или через меню «Отладка → Начать отладку». Чтобы подключиться к уже работающему сеансу или фоновому заданию, используйте «Отладка → Подключение»: в списке появятся доступные предметы отладки — сеансы пользователей и фоновые задания, запущенные на сервере.

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

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

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

Для отладки веб-сервисов и HTTP-сервисов, опубликованных на веб-сервере, используется отладка по протоколу HTTP. В параметрах публикации базы (файл default.vrd) должен быть включён флаг отладки — атрибут debug в элементе <debug> или соответствующая настройка при публикации. В конфигураторе при этом выбирается вариант подключения через сервер отладки.

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

Проверка результата и отключение отладки

Признак успешной настройки: в окне «Отладка → Подключение» отображаются активные сеансы и фоновые задания сервера, а выполнение кода останавливается на точках останова в серверных процедурах. Если остановки нет — проверьте директиву компиляции модуля: точка в модуле с &НаКлиенте не сработает при серверном вызове.

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

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

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

Список предметов отладки в конфигураторе
Норма

Видны сеансы и фоновые задания сервера

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

Список пуст при активных сеансах

Точка останова в серверной процедуре
Норма

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

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

Точка обведена как недоступная или игнорируется

Свойства кластера
Норма

«Разрешена отладка» = Да

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

Флаг сброшен — настройка не сохранилась

Итог

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

Отладка на сервере 1С включается флагом в свойствах кластера или ключом -debug при запуске агента. В конфигураторе выбирается тип отладки «Сервер», а подключение к фоновым заданиям выполняется вручную. На продуктиве отладку включайте временно и отключайте после работы.

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

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

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

Почему конфигуратор не видит предметы отладки?

Основные причины: отладка не включена на кластере, у пользователя нет права «Отладка» в ролях, версии платформы на сервере и клиенте различаются, либо закрыты порты кластера на сетевом экране. Проверяйте эти пункты последовательно.

Как отладить фоновое задание, которое завершается за секунду?

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

Влияет ли включённая отладка на производительность?

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

Чем отличается отладка по HTTP от обычной?

Отладка по HTTP используется, когда база опубликована на веб-сервере и сеансы работают через него. Она требует включения отладки в параметрах публикации и выбора соответствующего способа подключения в конфигураторе, тогда как обычная отладка идёт напрямую к кластеру по TCP/IP.