Разработка и Конфигурация · 11 мин
Как включить отладку на сервере 1С: пошаговая инструкция
Как включить отладку на сервере 1С: параметр -debug, настройка кластера, протоколы TCP и HTTP, подключение конфигуратора к серверным процедурам и типичные ошибки.
Отладка серверного кода — одна из самых частых задач при разработке в клиент-серверном варианте 1С. Процедуры и функции с директивой &НаСервере, серверные общие модули и обработчики бизнес-процессов выполняются внутри рабочих процессов кластера, и без специального режима конфигуратор просто не видит эти точки останова. Признак проблемы знаком каждому разработчику: точка останова установлена, код точно выполняется, но отладчик молчит.
Причина почти всегда одна — сервер 1С запущен без ключа отладки, либо конфигуратор подключается не к тому серверу отладки или по несовместимому протоколу. Ниже разберём, как включить отладку на сервере под Windows и Linux, как выбрать протокол, как проверить, что режим реально активен, и какие ошибки встречаются чаще всего.
Когда нужна серверная отладка и как она устроена
В клиент-серверном режиме код делится на клиентскую и серверную части. Клиентская часть выполняется в процессе тонкого или толстого клиента, и её отладка работает без дополнительной настройки. Серверный код исполняется рабочими процессами кластера (rphost), которые по умолчанию запущены без поддержки отладки — это сделано осознанно, поскольку режим отладки снижает производительность и открывает дополнительный канал взаимодействия с процессами.
Отладку включает агент сервера (ragent), который передаёт соответствующий флаг рабочим процессам. Поэтому настройка выполняется не в конфигураторе и не в консоли кластера, а в параметрах запуска самой службы агента. Конфигуратор отвечает только за подключение к уже работающему серверу отладки.
Включение отладки на сервере под Windows
На Windows агент сервера обычно работает как служба «Агент сервера 1С:Предприятия». Параметры её запуска хранятся в реестре, и править нужно именно их, а не ярлык. Порядок действий следующий.
Откройте редактор реестра и найдите ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Внутри будет раздел службы агента сервера — его имя содержит версию платформы, например 1C:Enterprise 8.3 Server Agent. В параметре ImagePath указана полная строка запуска агента.
Допишите в конец строки запуска ключ -debug. Если нужен конкретный протокол, укажите его явно: -debug -http или -debug -tcp. После правки перезапустите службу через оснастку services.msc или командной строкой. Без перезапуска изменения не вступят в силу — уже работающие процессы rphost не переключатся в отладочный режим.
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"Альтернативный способ — запустить агент вручную из командной строки с нужными ключами, предварительно остановив службу. Это удобно для разового сеанса отладки на тестовом стенде: не нужно править реестр, а после завершения работы достаточно закрыть консоль и снова запустить службу.
Включение отладки на сервере под Linux
На Linux параметры запуска агента задаются в unit-файле systemd или в скрипте запуска. Откройте соответствующий unit-файл (обычно он называется srv1cv8-*.service и лежит в /etc/systemd/system/) и найдите директиву ExecStart.
Добавьте в строку запуска ключ -debug и при необходимости протокол. После правки выполните перечитывание конфигурации systemd и перезапуск службы.
systemctl daemon-reload
systemctl restart srv1cv8-8.3.22.1750Убедитесь, что правите именно тот unit-файл, который реально используется: если серверов несколько или платформа обновлялась, в системе могут остаться старые файлы запуска. Проверить активную службу можно командой systemctl list-units | grep srv1cv8.
Выбор протокола отладки: TCP или HTTP
Начиная с платформы 8.3.7 поддерживаются два протокола отладки: классический TCP и более новый HTTP. Они несовместимы между собой: если сервер запущен с отладкой по HTTP, а в настройках базы выбран TCP, подключение не состоится, и наоборот.
Сравнение протоколов отладки
Классический протокол, подходит для старых версий платформы и простых локальных сетей. Может конфликтовать с ограничениями брандмауэра и требует открытых портов диапазона отладки.
Рекомендуемый вариант для современных версий платформы. Лучше проходит через сетевые экраны, поддерживает отладку через веб-сервер и в большинстве случаев устойчивее в распределённых инфраструктурах.
Тип отладки задаётся в двух местах: параметром запуска агента (-debug -http или -debug -tcp) и в свойствах информационной базы в конфигураторе — параметр «Тип отладки» на закладке «Дополнительно». Оба значения должны совпадать. Если оставить в свойствах базы значение «по умолчанию», платформа попытается использовать протокол, заданный на сервере, но явное указание снижает число неодиозначных ситуаций.
Настройка подключения в конфигураторе
После перезапуска агента с ключом отладки откройте конфигуратор и перейдите в меню «Отладка» → «Подключение». В окне подключения проверьте адрес сервера отладки: он должен указывать на сервер, где работает кластер. Если конфигуратор запущен на другой машине, автоматический поиск может не сработать — укажите сервер вручную в настройках отладки («Отладка» → «Параметры»).
Установите точку останова в серверной процедуре и запустите отладку (F5). Если подключение прошло успешно, в окне подключения появятся предметы отладки с типом «Сервер», а выполнение остановится на точке. Если останова нет — смотрите раздел про проверку и ошибки ниже.
- 1Остановите службу агента сервера 1С
- 2Добавьте ключ -debug (и протокол -http или -tcp) в строку запуска агента
- 3Перезапустите службу и дождитесь старта рабочих процессов
- 4В свойствах базы в конфигураторе установите тот же тип отладки
- 5Откройте Отладка → Подключение и убедитесь, что видны предметы отладки с типом «Сервер»
- 6Поставьте точку останова в серверном коде и выполните действие в клиенте
Как проверить, что отладка действительно включена
Самый надёжный признак — наличие ключа -debug в командной строке работающего процесса ragent. На Windows это видно через «Диспетчер задач» (вкладка «Подробности», столбец «Командная строка») или через Process Explorer. На Linux — командой ps aux | grep ragent.
Второй признак — поведение конфигуратора: при корректной настройке в окне «Подключение» появляются предметы отладки серверных процессов, а точки останова в серверных модулях перестают отображаться как недоступные. Если точка останова помечена как недостижимая, конфигуратор не подключён к серверу отладки.
Как проверить результат
В параметрах процесса присутствует -debug
Ключа нет — служба запущена без отладки, правили не ту службу или не перезапустили
Есть предметы отладки с типом «Сервер»
Виден только клиентский процесс — сервер отладки недоступен
Выполнение останавливается при вызове кода
Точка игнорируется — несовпадение протокола или код выполняется в другом сеансе
Типичные ошибки и ограничения
Самая частая ошибка — правка параметров не той службы. На сервере с несколькими версиями платформы одновременно существуют несколько служб агента, и легко изменить строку запуска у версии, которая не обслуживает нужный кластер. Всегда сверяйте версию платформы базы с версией агента.
Вторая группа проблем — сетевые. При отладке по TCP брандмауэр может блокировать порты сервера отладки, а при работе через NAT или VPN автоматический поиск сервера отладки часто не срабатывает. В таких случаях помогает явное указание адреса сервера в параметрах отладки конфигуратора и переход на протокол HTTP.
Третья типичная ситуация: отладка включена, но точка не срабатывает, потому что код выполняется в фоновом задании или под другим пользователем. В окне подключения нужно включить отображение фоновых заданий и сеансов других пользователей — по умолчанию конфигуратор показывает только текущий сеанс.
Если продуктивную проблему нужно исследовать без рисков, безопасная альтернатива — развернуть копию базы на тестовом сервере, включить отладку там и воспроизвести сценарий. Дополнительно помогает технологический журнал: он фиксирует ошибки и долгие вызовы без включения отладочного режима и без остановки выполнения кода.
Что важно запомнить
Серверная отладка включается ключом -debug в параметрах запуска агента сервера с обязательным перезапуском службы. Протокол (TCP или HTTP) должен совпадать на сервере и в свойствах базы. Проверяйте результат по командной строке ragent и по наличию серверных предметов отладки в конфигураторе, а на продуктиве режим отладки держите включённым минимально необходимое время.
Частые вопросы
Почему точка останова в серверном коде отображается как недоступная?
Это означает, что конфигуратор не подключён к серверу отладки. Проверьте наличие ключа -debug в командной строке агента, совпадение типа отладки в свойствах базы с протоколом сервера и доступность сервера по сети. После исправления переоткройте окно «Отладка → Подключение».
Нужно ли перезапускать рабочие процессы rphost отдельно?
Отдельно не нужно: перезапуск службы агента пересоздаёт рабочие процессы, и новые rphost стартуют уже с учётом ключа отладки. Если процессы по какой-то причине не завершились, дождитесь их остановки или завершите вручную до повторного запуска службы.
Можно ли отлаживать фоновые и регламентные задания?
Да. В окне «Отладка → Подключение» включите отображение нужных типов предметов отладки — фоновые задания по умолчанию скрыты. После этого поставьте точку останова в коде, который выполняет задание, и дождитесь его запуска или запустите принудительно.
Отладка работает на одном компьютере, но не подключается с другого — в чём причина?
Чаще всего мешает сетевая инфраструктура: брандмауэр блокирует порты отладки или автоматический поиск сервера не проходит через маршрутизатор. Укажите адрес сервера отладки вручную в параметрах конфигуратора и попробуйте перейти на протокол HTTP, который проще проходит через сетевые экраны.
Влияет ли включённая отладка на работу пользователей?
Да, режим отладки снижает производительность серверного кода, а остановка на точке блокирует конкретный сеанс. На продуктивном сервере это может быть заметно пользователям, поэтому для регулярной разработки используйте тестовый кластер, а на продуктиве включайте отладку только на время диагностики.
Как отключить серверную отладку после завершения работы?
Уберите ключ -debug из строки запуска агента (в реестре Windows или unit-файле systemd) и перезапустите службу. Убедиться в отключении можно тем же способом, что и при проверке включения, — по командной строке процесса ragent.