Разработка и Конфигурация · 9 мин
Отладка на сервере 1С 8.3: как включить и подключить debug
Как включить отладку на сервере 1С 8.3: параметр -debug, настройка службы агента, подключение предметов отладки в конфигураторе, типичные ошибки и решения.
Код, который выполняется в серверных процедурах и функциях, нельзя отладить, просто запустив конфигуратор и поставив точку останова: по умолчанию сервер 1С:Предприятия работает без поддержки отладки, и конфигуратор «не видит» серверный контекст. Чтобы подключить debug, нужно перезапустить агент сервера со специальным параметром и правильно настроить подключение предметов отладки.
Проблема усугубляется тем, что в клиент-серверном режиме большая часть бизнес-логики — обработчики проведения, запросы к данным, вызовы веб-сервисов — исполняется именно на сервере. Без включённой отладки разработчик вынужден обходиться сообщениями в журнал регистрации, что замедляет поиск ошибок в разы.
Ниже разобран полный порядок включения отладки на сервере 1С 8.3 для Windows и Linux, настройка конфигуратора, особенности отладки через HTTP и типичные ошибки, из-за которых точки останова не срабатывают.
Как устроена отладка в клиент-серверном режиме
В файловом варианте клиент и весь исполняемый код находятся в одном процессе, поэтому отладка работает «из коробки». В клиент-серверном варианте код распределён: тонкий или толстый клиент исполняет клиентские процедуры, а серверные вызовы уходят в рабочие процессы (rphost) кластера серверов. Каждый такой процесс — потенциальный предмет отладки.
Агент сервера (ragent) управляет коммуникацией между отладчиком (конфигуратором) и рабочими процессами. Без ключа -debug агент не открывает отладочные порты, и конфигуратор физически не может подключиться к серверному коду. Именно поэтому перезапуск службы — обязательный шаг, а не рекомендация.
Включение отладки на сервере Windows
На Windows агент сервера 1С обычно работает как служба «Агент сервера 1С:Предприятия 8.3». Путь запуска службы хранится в реестре, и именно туда добавляется параметр -debug.
Откройте редактор реестра и найдите ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (имя может отличаться в зависимости от версии платформы и порта). В параметре ImagePath в конец строки запуска добавьте -debug. После этого перезапустите службу через оснастку services.msc или командную строку.
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"Альтернативный способ без правки реестра — остановить службу и запустить ragent.exe вручную из командной строки с параметрами, включая -debug. Это удобно для временной отладки: закрыли окно консоли — отладка отключилась.
- 1Откройте реестр и найдите параметр ImagePath службы агента сервера 1С
- 2Добавьте в конец строки запуска параметр -debug
- 3Перезапустите службу агента сервера
- 4Откройте конфигуратор и убедитесь, что предметы отладки доступны для подключения
Включение отладки на сервере Linux
На Linux агент сервера запускается скриптом или systemd-юнитом. Найдите файл запуска (обычно в каталоге установки платформы или в /etc/systemd/system/) и добавьте -debug в строку параметров запуска srv1cv8. После изменения выполните systemctl daemon-reload (если правили unit-файл) и перезапустите службу.
Проверить, что агент запущен с отладкой, можно через список процессов: в строке запуска процесса ragent должен присутствовать ключ -debug. Если ключа нет — отладка не включится, как бы ни был настроен конфигуратор.
Подключение предметов отладки в конфигураторе
После перезапуска сервера откройте конфигуратор и перейдите в меню «Отладка → Подключение…». В открывшемся окне отображаются доступные предметы отладки: клиентские приложения, серверные процессы, фоновые задания. Отметьте нужные и нажмите «Подключить».
Критически важная настройка — кнопка «Настройка» в том же окне или «Сервис → Параметры → Отладка». Если конфигуратор и сервер находятся на разных машинах, установите переключатель «Искать предметы отладки на удалённом сервере» и укажите имя или адрес сервера. Также убедитесь, что в поле «Использовать локальные/сетевые предметы отладки» выбран правильный вариант.
Для отладки серверного кода обязательно подключите предмет отладки типа «Сервер». Если в списке его нет — почти наверняка агент запущен без -debug или конфигуратор ищет предметы не на том сервере.
Как проверить, что отладка работает
Содержит параметр -debug
Параметра нет — правка реестра не применена или служба не перезапущена
Видны предметы отладки типа «Сервер» и «Клиент»
Список пуст или есть только клиент
Выполнение останавливается, доступны переменные
Точка останова отображается пустым кружком и не срабатывает
Отладка фоновых заданий, веб-сервисов и HTTP-сервисов
Фоновые задания исполняются в отдельных сеансах на сервере, поэтому для их отладки в окне подключения установите флажок «Автоматическое подключение» к фоновым заданиям или вручную подключите появившийся сеанс. Учтите, что сеанс фонового задания создаётся в момент запуска — если задание отработало за долю секунды, подключиться вы не успеете; в таком случае добавьте в код временную задержку или запускайте задание повторно.
Отладка HTTP- и веб-сервисов требует, чтобы публикация на веб-сервере выполнялась с включённым флажком отладки (в файле default.vrd параметр debug). В конфигураторе при публикации через «Администрирование → Публикация на веб-сервере» есть соответствующий флажок «Разрешить отладку». Без него вызовы сервисов будут исполняться мимо отладчика.
Типичные ошибки и их устранение
Самая частая ситуация — точка останова отображается не заполненным кружком, а «пустым» или с предупреждением, и выполнение не останавливается. Это означает, что код исполняется в процессе, который не подключён к отладчику: либо сервер без -debug, либо процедура выполняется в другом сеансе (фоновое задание, другой пользователь).
Вторая распространённая причина — конфигуратор ищет предметы отладки локально, а сервер расположен на другой машине. Проверьте настройку «Искать предметы отладки на удалённом сервере». Третья причина — блокировка отладочных портов брандмауэром: диапазон портов отладки должен быть открыт между машиной разработчика и сервером.
Также учитывайте, что отладка не сработает, если конфигурация базы данных отличается от конфигурации, открытой в конфигураторе. Обновите конфигурацию базы данных, чтобы текст модулей совпадал с исполняемым кодом.
Ограничения и безопасная практика
Режим отладки — инструмент для тестовых контуров. На продуктивном сервере он создаёт два риска: снижение быстродействия рабочих процессов и возможность остановки исполнения кода любым подключившимся отладчиком, что может привести к обрыву транзакций пользователей. Правильный подход — развёрнуть копию базы на отдельном сервере или в отдельном кластере и отлаживаться там.
Если включить отладку невозможно (нет прав на сервер, политики безопасности), используйте альтернативы: журнал регистрации с отбором по событию, технологический журнал с настройкой logcfg.xml, вывод отладочных сообщений через Сообщить() в тестовой среде. Они не заменяют пошаговую отладку, но позволяют локализовать место ошибки.
Что важно запомнить
Серверная отладка в 1С 8.3 включается параметром -debug в строке запуска агента сервера с обязательным перезапуском службы. Затем в конфигураторе подключаются предметы отладки с указанием удалённого сервера. Для веб-сервисов дополнительно нужна отладочная публикация. На продуктиве режим отладки держать включённым нельзя.
Частые вопросы
Почему точка останова в серверной процедуре не срабатывает?
Чаще всего агент сервера запущен без параметра -debug либо конфигуратор ищет предметы отладки на локальной машине вместо удалённого сервера. Также проверьте, что конфигурация базы данных обновлена и совпадает с открытой в конфигураторе.
Можно ли отлаживать серверный код без перезапуска службы?
Нет. Параметр -debug читается агентом только при старте, поэтому перезапуск службы обязателен. Все активные сеансы при этом будут разорваны — предупредите пользователей или работайте на тестовом сервере.
Как отладить фоновое задание, которое выполняется мгновенно?
Включите в настройках подключения автоматическое подключение к новым предметам отладки типа «Фоновое задание». Если задание завершается раньше, чем отладчик успевает подключиться, временно добавьте в начало обработчика задержку или цикл ожидания.
Нужен ли -debug для отладки веб-сервисов 1С?
Да, для серверного кода веб-сервисов параметр -debug нужен так же. Дополнительно при публикации сервиса должен быть включён режим отладки (параметр debug в default.vrd или соответствующий флажок при публикации из конфигуратора).
Как отключить отладку на сервере после завершения работ?
Удалите параметр -debug из строки запуска службы (в реестре Windows или в скрипте/unit-файле Linux) и перезапустите агент сервера. Проверьте по строке запуска процесса, что ключ исчез.