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

Разработка и Конфигурация · 11 мин

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

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

Отладка серверного кода в 1С:Предприятие 8.3 отличается от отладки в файловой базе: код общих модулей с флагом «Сервер» выполняется внутри рабочих процессов кластера (rphost), а не на компьютере разработчика. Чтобы поставить точку останова в серверной процедуре и дойти до неё, нужно запустить сервер 1С в режиме отладки и правильно подключить конфигуратор.

Проблема чаще всего возникает при работе с клиент-серверной базой на MS SQL, PostgreSQL или другой СУБД: точка останова в серверном модуле просто «не срабатывает», конфигуратор показывает её с прочерком, а предметы отладки не подключаются. В большинстве случаев причина — кластер запущен без ключа отладки или отладка идёт по HTTP-протоколу, который не настроен.

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

Как устроена отладка в клиент-серверном варианте

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

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

Запуск сервера 1С в режиме отладки

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

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

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

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

На Linux служба агента запускается скриптом, параметры которого обычно задаются в конфигурационном файле службы (например, в /etc/sysconfig/1cv8 или в unit-файле systemd). Добавьте ключ -debug в строку параметров и перезапустите службу командой systemctl restart.

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

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

Если используется TCP-отладка, в настройках укажите протокол «Отладка по протоколу TCP/IP». Если сервер запущен с ключом -http, выберите «Отладка по протоколу HTTP» и при необходимости укажите адрес сервера отладки. Конфигуратор запоминает выбранный протокол, и при несовпадении протоколов на сервере и в конфигураторе предметы отладки не появятся.

Для автоматического подключения при старте отладки включите в настройках запуска (меню «Сервис → Параметры», раздел «Запуск 1С:Предприятия») соответствующие флажки. Тогда при нажатии F5 конфигуратор сам подключит все доступные предметы, включая серверные.

Порядок действий
  1. 1
    Остановите службу агента сервера 1С и запустите её с ключом -debug (или -debug -http)
  2. 2
    Откройте конфигуратор, меню «Отладка → Подключение → Настройка», выберите правильный протокол
  3. 3
    Отметьте автоматическое подключение серверных предметов отладки
  4. 4
    Перезапустите клиентский сеанс через «Отладка → Начать отладку» (F5)
  5. 5
    Поставьте точку останова в серверном модуле и выполните действие, вызывающее серверный код
  6. 6
    Убедитесь, что точка останова сработала и стек вызовов показывает серверный контекст

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

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

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

Учтите ограничение: сеансовые данные и поведение кода в фоновом задании могут отличаться от интерактивного сеанса (нет пользовательского интерфейса, другой пользователь). Проверяйте логику с учётом контекста, в котором задание запускается в продуктивной среде.

Проверка результата и диагностика

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

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

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

Красный кружок без прочерка, при вызове выполнение останавливается

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

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

Список в окне «Отладка → Подключение»
Норма

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

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

Список пуст или есть только клиентское приложение

Параметры службы агента сервера
Норма

В командной строке процесса ragent есть ключ -debug

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

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

Быстрый способ убедиться, что сервер запущен с отладкой, — посмотреть командную строку процесса ragent в диспетчере задач (включите отображение столбца «Командная строка») или командой wmic. Если ключа -debug там нет, все остальные настройки бесполезны.

Ещё один признак корректной работы: при старте отладки (F5) конфигуратор показывает в панели предметов отладки не только «Тонкий клиент» или «Толстый клиент», но и серверные предметы. Если их нет — смотрите протокол, права пользователя и сетевую доступность портов.

Типичные ошибки и ограничения

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

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

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

Что делать, если отладка не подключается

Маршрут решения

Как выбрать действие

Точка останова в серверном модуле показана с прочеркомПроверьте ключ -debug в командной строке ragent и перезапустите клиентский сеанс
Список предметов отладки пустПроверьте совпадение протокола (TCP/HTTP) в конфигураторе и параметрах запуска сервера
TCP-отладка не работает через сетьОткройте диапазон портов отладки на брандмауэре или перейдите на HTTP-отладку
Фоновое задание не появляется в спискеОтметьте тип «Фоновое задание» в настройках подключения и убедитесь, что задание реально запущено
Нужно отладить продуктивную проблему без рискаСнимите копию базы, разверните её на тестовом сервере и отлаживайте там

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

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

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

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

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

Чем отладка по HTTP лучше отладки по TCP?

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

Почему точка останова стоит, но выполнение не останавливается?

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

Опасно ли включать отладку на продуктивном сервере?

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

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

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

Нужны ли отдельные лицензии для отладки на сервере?

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

Итог

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

Серверная отладка в 1С 8.3 работает только если агент сервера запущен с ключом -debug (или -debug -http), а в конфигураторе выбран тот же протокол и включено автоподключение серверных предметов отладки. После настройки перезапустите клиентский сеанс и проверьте, что точки останова в серверных модулях отображаются без прочерка. На продуктивном сервере отладку включайте кратковременно, предпочитая тестовую копию базы.