Администрирование · 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.
"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Альтернатива без правки реестра — остановить службу и запустить агент как приложение из командной строки с нужными параметрами. Это удобно для разового тестирования: закрыли окно консоли — агент остановлен. Но для постоянной работы служба предпочтительнее.
- 1Откройте regedit от имени администратора
- 2Перейдите в HKLM\SYSTEM\CurrentControlSet\Services и найдите службу агента сервера 1С
- 3В параметре ImagePath допишите в конец строки ключ -debug (и -http при отладке по HTTP)
- 4Перезапустите службу «Агент сервера 1С:Предприятия» в services.msc
- 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 — служба должна быть активна без ошибок.
systemctl daemon-reload && systemctl restart srv1cv83 && systemctl status srv1cv83Если сервер запускается вручную из командной строки, просто добавьте -debug к команде запуска ragent. Учтите, что при запуске вручную процесс привязан к вашей сессии — при выходе агент завершится.
Настройка отладки по HTTP через веб-сервер
Отладка по HTTP требует, чтобы отладочные запросы проходили через веб-сервер (IIS или Apache) к серверу 1С. Для этого база должна быть опубликована на веб-сервере, а в файле публикации default.vrd должен присутствовать элемент отладки: <debug url="..." protocol="http"/> или соответствующий атрибут. При публикации из конфигуратора нужный фрагмент добавляется автоматически, если включена соответствующая опция.
На стороне конфигуратора в «Сервис → Параметры → Отладка» установите протокол отладки «По HTTP» и укажите адрес сервера отладки. Если веб-сервер и сервер 1С находятся на разных машинах, проверьте сетевую доступность и правила брандмауэра — отладочный трафик не должен блокироваться.
Сравнение вариантов
Классический вариант, не требует веб-сервера. Подходит для локальной сети. Ограничение: нужны открытые порты отладочного диапазона между клиентом и сервером.
Работает через веб-сервер, подходит для удалённых подключений и разделённой инфраструктуры. Ограничение: требует публикации базы и настройки default.vrd.
Подключение к отладке в конфигураторе
После перезапуска агента с ключом -debug откройте конфигуратор и перейдите в «Отладка → Подключение». Если список предметов отладки пуст — нажмите «Настройка» и проверьте параметры подключения. В окне подключения отметьте нужные типы предметов отладки: «Сервер», «Фоновое задание» (для регламентных заданий), «HTTP-сервис» или «Веб-сервис» — в зависимости от того, что отлаживаете.
Учтите важную особенность: фоновые задания не подключаются к отладке автоматически. Чтобы отладить регламентное задание, включите в настройках отладки автоматическое подключение фоновых заданий либо подключите конкретное задание вручную в момент его выполнения. Также полезно включить «Останавливаться по ошибке» — тогда отладчик активируется в точке возникновения исключения даже без расставленных точек останова.
Проверка результата и типичные ошибки
Признак успешного включения — в окне «Отладка → Подключение» доступен предмет отладки типа «Сервер», а точки останова в серверных модулях подсвечиваются как активные. Дополнительная проверка: выполните в пользовательском режиме действие, вызывающее серверный код, — отладчик должен остановиться на точке останова.
Как проверить результат
Видны предметы отладки типа «Сервер»
Список пуст или есть только клиентские процессы
Отладчик останавливается при выполнении кода
Точка останова отображается недоступной (пустой кружок)
Служба работает, пользователи подключаются
Служба не стартует — ошибка в строке ImagePath
Если служба не запускается после правки реестра, чаще всего причина — случайно повреждённая строка ImagePath: удалён пробел, кавычка или часть пути. Восстановите строку из резервной копии реестра или с другого сервера той же версии. Если отладчик не подключается по TCP с клиентской машины, проверьте, не блокирует ли брандмауэр отладочные порты рабочих процессов.
Безопасность: почему отладку нельзя держать включённой постоянно
Режим отладки — это инструмент разработки, а не штатный режим продуктивного сервера. Включённый -debug снижает производительность рабочих процессов и, что важнее, позволяет любому, кто может подключиться отладчиком, останавливать выполнение кода, просматривать и изменять значения переменных, включая данные, к которым у пользователя нет доступа в обычном режиме.
Правильная практика: включайте отладку на продуктивном сервере только на время диагностики конкретной проблемы, а после завершения удалите ключ -debug и перезапустите службу. Для регулярной разработки используйте отдельный тестовый сервер или копию базы — там отладка может быть включена постоянно без рисков для бизнес-данных.
Что важно запомнить
Режим отладки включается ключом -debug в строке запуска агента сервера 1С (реестр в Windows, systemd-юнит в Linux) с обязательным перезапуском службы. После этого подключитесь в конфигураторе к предметам отладки «Сервер», а по завершении работ отключите отладку на продуктивном сервере.
Частые вопросы
Нужно ли перезапускать сервер 1С после добавления ключа -debug?
Да, обязательно. Параметры командной строки агент сервера читает только при старте. Перезапуск разрывает все сеансы пользователей, поэтому выполняйте его в нерабочее время или после предупреждения.
Почему в окне подключения нет предмета отладки «Сервер»?
Наиболее вероятные причины: служба не была перезапущена после добавления ключа, ключ добавлен не в ту службу (проверьте, что правите агент именно используемой версии платформы), либо конфигуратор подключается к другому кластеру. Также проверьте настройки протокола отладки в параметрах конфигуратора.
Можно ли отладить регламентное задание на сервере?
Да. Включите отладку на сервере, затем в конфигураторе в настройках подключения отметьте автоматическое подключение предметов отладки типа «Фоновое задание». Задание подхватится отладчиком при следующем запуске. Альтернатива — программно запустить отладку из кода через объект отладки, но это сложнее.
Чем отличается отладка по HTTP от отладки по TCP?
TCP — классический протокол, работает напрямую между конфигуратором и сервером, требует открытых портов. HTTP идёт через веб-сервер и подходит, когда клиент и сервер разделены сетью или файрволом. Для HTTP нужна публикация базы и ключ -http в параметрах агента.
Влияет ли режим отладки на работу пользователей?
Да. Включённый режим отладки замедляет выполнение серверного кода, а активное подключение отладчика с остановкой на точке останова блокирует соответствующий рабочий процесс — у других пользователей, обслуживаемых этим процессом, возникнут задержки. Поэтому на продуктиве отладку включают кратковременно.
Как отключить режим отладки после завершения работ?
Удалите ключ -debug из строки запуска службы (в реестре Windows или в юните systemd) и перезапустите агент сервера. Дополнительная перезагрузка сервера или чистка баз не требуется — режим полностью отключается перезапуском службы.