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

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

Как включить режим отладки на сервере 1С:Предприятие

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

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

Режим отладки включается не в конфигураторе, а на уровне агента сервера 1С:Предприятие — путём добавления параметра -debug в строку запуска службы. Способ добавления зависит от операционной системы (Windows или Linux) и от того, как установлен сервер: как служба или как приложение. Ниже разобраны все рабочие сценарии, включая отладку по протоколам TCP и HTTP.

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

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

Сначала убедитесь, что отладка действительно требуется на сервере, а не на клиенте. Если код выполняется в клиентском контексте (директивы &НаКлиенте, обработчики формы), достаточно обычной отладки тонкого или толстого клиента — серверные настройки не понадобятся. Серверная отладка нужна для кода с директивами &НаСервере, общих серверных модулей, модулей менеджеров объектов и регламентных заданий.

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

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

Включение отладки на сервере под Windows

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

Внутри раздела найдите строковый параметр ImagePath — это полная строка запуска службы. В конец строки, после существующих параметров, добавьте пробел и ключ -debug. Если планируете использовать отладку по HTTP, добавьте также -http. Сохраните изменение и перезапустите службу «Агент сервера 1С:Предприятия» через оснастку services.msc.

text
"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

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

Порядок действий в Windows
  1. 1
    Откройте regedit от имени администратора
  2. 2
    Перейдите в HKLM\SYSTEM\CurrentControlSet\Services и найдите службу агента сервера 1С
  3. 3
    В параметре ImagePath допишите в конец строки ключ -debug (и -http при отладке по HTTP)
  4. 4
    Перезапустите службу «Агент сервера 1С:Предприятия» в services.msc
  5. 5
    Проверьте, что служба запустилась и сеансы пользователей восстановились

Включение отладки на сервере под Linux

На Linux агент сервера обычно запускается systemd-юнитом или init-скриптом, которые вызывают исполняемый файл srv1cv83 (или ragent напрямую). Найдите файл юнита — чаще всего это /etc/systemd/system/srv1cv83.service или скрипт в /etc/init.d/.

В строке запуска (директива ExecStart для systemd) добавьте параметр -debug к аргументам агента. После правки юнита выполните systemctl daemon-reload, затем перезапустите службу командой systemctl restart srv1cv83. Проверьте статус: systemctl status srv1cv83 — служба должна быть активна без ошибок.

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

Если сервер запускается вручную из командной строки, просто добавьте -debug к команде запуска ragent. Учтите, что при запуске вручную процесс привязан к вашей сессии — при выходе агент завершится.

Настройка отладки по HTTP через веб-сервер

Отладка по HTTP требует, чтобы отладочные запросы проходили через веб-сервер (IIS или Apache) к серверу 1С. Для этого база должна быть опубликована на веб-сервере, а в файле публикации default.vrd должен присутствовать элемент отладки: <debug url="..." protocol="http"/> или соответствующий атрибут. При публикации из конфигуратора нужный фрагмент добавляется автоматически, если включена соответствующая опция.

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

Сравнение вариантов

Отладка по TCP

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

Отладка по HTTP

Работает через веб-сервер, подходит для удалённых подключений и разделённой инфраструктуры. Ограничение: требует публикации базы и настройки default.vrd.

Подключение к отладке в конфигураторе

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

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

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

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

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

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

Окно подключения к отладке
Норма

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

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

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

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

Отладчик останавливается при выполнении кода

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

Точка останова отображается недоступной (пустой кружок)

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

Служба работает, пользователи подключаются

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

Служба не стартует — ошибка в строке ImagePath

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

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

Безопасность: почему отладку нельзя держать включённой постоянно

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

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

Итог

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

Режим отладки включается ключом -debug в строке запуска агента сервера 1С (реестр в Windows, systemd-юнит в Linux) с обязательным перезапуском службы. После этого подключитесь в конфигураторе к предметам отладки «Сервер», а по завершении работ отключите отладку на продуктивном сервере.

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

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

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

Почему в окне подключения нет предмета отладки «Сервер»?

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

Можно ли отладить регламентное задание на сервере?

Да. Включите отладку на сервере, затем в конфигураторе в настройках подключения отметьте автоматическое подключение предметов отладки типа «Фоновое задание». Задание подхватится отладчиком при следующем запуске. Альтернатива — программно запустить отладку из кода через объект отладки, но это сложнее.

Чем отличается отладка по HTTP от отладки по TCP?

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

Влияет ли режим отладки на работу пользователей?

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

Как отключить режим отладки после завершения работ?

Удалите ключ -debug из строки запуска службы (в реестре Windows или в юните systemd) и перезапустите агент сервера. Дополнительная перезагрузка сервера или чистка баз не требуется — режим полностью отключается перезапуском службы.