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