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

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

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

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

Отладка серверного кода в 1С 8.3 не работает «из коробки»: агент сервера по умолчанию запускается без поддержки отладки, и конфигуратор не видит серверные процедуры при пошаговом выполнении. Чтобы исправить это, нужно перезапустить службу агента сервера с параметром -debug, а затем правильно настроить подключение в конфигураторе.

Способ включения зависит от того, как установлен сервер: как служба Windows, как приложение или на Linux. Ниже разобраны все варианты, включая указание порта отладки, настройку протокола HTTP-отладки и проверку результата. Отдельно рассмотрены типичные ошибки, из-за которых точки останова «не ловятся» даже после включения режима.

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

Что такое режим отладки сервера и когда он нужен

В клиент-серверном варианте работы 1С код, помеченный директивами &НаСервере, а также серверные процедуры общих модулей и менеджеров объектов выполняется внутри рабочих процессов сервера (rphost), а не на компьютере пользователя. Конфигуратор, запущенный на машине разработчика, физически не может «зайти» внутрь этих процессов, пока агент сервера не запущен в режиме отладки.

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

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

Способ 1: включение отладки через реестр Windows (агент как служба)

Самый распространённый сценарий — сервер 1С установлен на Windows и работает как служба «Агент сервера 1С:Предприятия». Параметры запуска такой службы хранятся в реестре, и именно туда нужно добавить ключ -debug.

Откройте редактор реестра (Win+R → regedit) и перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Найдите подраздел службы агента — его имя обычно содержит версию платформы и порт, например 1C:Enterprise 8.3 Server Agent (x86-64) или похожее название с номером порта.

Внутри раздела найдите строковый параметр ImagePath — это полная команда запуска службы. Откройте его на редактирование и аккуратно добавьте в конец строки, перед закрывающей частью, фрагмент -debug. Строка должна остаться корректной: не удаляйте существующие параметры -srvc, -agent, -regport и другие.

После правки реестра перезапустите службу: через «Службы» (services.msc) найдите агент сервера 1С и выберите «Перезапустить», либо выполните в командной строке от имени администратора команды остановки и запуска. После перезапуска режим отладки активен.

Порядок действий для службы Windows
  1. 1
    Откройте regedit и перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  2. 2
    Найдите раздел службы агента сервера 1С вашей версии платформы
  3. 3
    Отредактируйте параметр ImagePath, добавив параметр -debug в строку запуска
  4. 4
    Перезапустите службу через services.msc или командную строку
  5. 5
    Проверьте подключение отладки в конфигураторе

Способ 2: запуск агента сервера как приложения с параметром -debug

Если сервер 1С запускается не как служба, а как обычное приложение (так часто делают на тестовых стендах), всё проще: достаточно запустить ragent.exe с нужными ключами из командной строки или ярлыка.

Команда запуска выглядит примерно так: путь к ragent.exe каталога установленной платформы, затем параметры -agent и -debug. При необходимости указывают порты и каталог служебных файлов кластера. Окно консоли при таком запуске должно оставаться открытым — его закрытие остановит агент.

cmd
"C:\Program Files\1cv8\8.3.22.1750\bin\ragent.exe" -agent -debug

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

Способ 3: включение отладки на сервере Linux

На Linux логика та же: процесс ragent должен стартовать с ключом -debug. Если агент запускается вручную или через скрипт, добавьте параметр в команду запуска. Если используется systemd-юнит, отредактируйте строку ExecStart в файле юнита, добавив -debug, после чего выполните перечитывание конфигурации и перезапуск сервиса.

bash
sudo systemctl daemon-reload && sudo systemctl restart srv1cv83

Имя юнита зависит от того, как настраивался сервер — уточните его командой systemctl list-units | grep 1c или поищите файлы юнитов в /etc/systemd/system. После перезапуска проверьте, что процесс ragent действительно запущен с нужным параметром, например через ps aux | grep ragent.

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

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

Дополнительно проверьте настройки через «Сервис → Параметры» на вкладке отладки. Там выбирается протокол отладки: классический (по TCP) или отладка по HTTP. В новых версиях платформы по умолчанию рекомендуется HTTP-протокол отладки — он работает через сервер и лучше проходит через сетевые ограничения. При использовании HTTP-отладки убедитесь, что в параметрах указан правильный сервер и информационная база.

После настройки запустите отладку (F5) или дождитесь, пока нужный сеанс выполнит серверный вызов. В окне «Подключение» подключённые предметы отладки отображаются списком — серверный процесс должен появиться там автоматически, если включено автоподключение.

Выбор порта отладки и диапазона портов

По умолчанию отладка по TCP использует порты из диапазона, связанного с портом кластера (обычно базовый порт 1560 и производные). Если серверов или кластеров несколько, либо порты заняты, диапазон портов отладки задают явно параметром -debugPort или через настройки кластера в консоли администрирования.

Убедитесь, что выбранные порты открыты в брандмауэре между машиной разработчика и сервером. Закрытый порт — одна из самых частых причин ситуации, когда «отладка включена, но не подключается». При HTTP-отладке трафик идёт через стандартный механизм взаимодействия с сервером, и отдельные порты обычно не требуются.

TCP или HTTP-отладка

Классическая отладка по TCP

Подходит для локальной сети без ограничений. Требует открытых портов отладки между машиной разработчика и сервером.

Отладка по HTTP

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

Проверка результата и типичные ошибки

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

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

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

Строка запуска службы агента
Норма

В ImagePath присутствует параметр -debug

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

Параметр отсутствует или добавлен в неверное место строки

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

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

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

Список пуст или есть только клиентские сеансы

Поведение точки останова
Норма

Исполнение останавливается в серверном коде

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

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

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

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

Перед правкой ImagePath скопируйте исходное значение параметра в текстовый файл. Если после изменения служба перестанет запускаться, вы сможете быстро вернуть рабочую строку, не восстанавливая конфигурацию вручную.
ПЗ
Практическое замечание
Итог

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

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

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

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

Нет. Параметр -debug читается только при старте процесса ragent, поэтому перезапуск агента обязателен. Учтите, что перезапуск разрывает активные сеансы пользователей — планируйте работы с учётом этого.

Почему точка останова в серверной процедуре отображается с восклицательным знаком?

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

Нужно ли включать отладку для файловой базы?

Нет. В файловом варианте весь код выполняется в процессе клиентского приложения, и конфигуратор отлаживает его без каких-либо дополнительных настроек. Параметр -debug относится только к клиент-серверному варианту работы.

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

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

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

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