Администрирование · 10 мин
Как включить режим отладки на сервере 1С
Как включить режим отладки на сервере 1С:Предприятие 8.3: параметр -debug, настройка службы агента, отладка по HTTP и TCP, типичные ошибки и проверка результата.
Отладка серверного кода в клиент-серверном варианте 1С:Предприятие 8.3 невозможна, пока сервер запущен в штатном режиме. Платформа по умолчанию не позволяет конфигуратору подключаться к рабочим процессам сервера, поэтому точки останова в серверных процедурах просто игнорируются. Чтобы это исправить, агент сервера 1С нужно запустить с параметром отладки.
Ниже описаны способы включения отладки для службы агента сервера в Windows, вариант для Linux, выбор протокола отладки (TCP или HTTP), настройка конфигуратора и проверка результата. Отдельно разобраны типичные ошибки и ограничения, с которыми администраторы сталкиваются чаще всего.
Что даёт режим отладки и когда он нужен
Режим отладки позволяет конфигуратору подключаться к рабочим процессам кластера и пошагово выполнять серверный код: процедуры и функции общих модулей, обработчики проведения, фоновые задания, код web-сервисов. Без специального параметра запуска эти механизмы недоступны, даже если предмет отладки настроен корректно.
Отладку включают в трёх типовых ситуациях: разработка и поиск ошибок в серверной логике, анализ поведения фоновых заданий и регламентных операций, диагностика проблем обмена через web-сервисы. На продуктивном сервере постоянно держать режим отладки включённым не рекомендуется: это снижает производительность рабочих процессов и расширяет поверхность для несанкционированного подключения.
Способ 1: включение отладки через реестр Windows
Самый надёжный способ для сервера под управлением Windows — изменить параметры запуска службы агента сервера 1С в реестре. Параметры хранятся в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64) (точное имя службы зависит от версии платформы и разрядности).
Порядок действий следующий. Откройте редактор реестра (regedit) от имени администратора, найдите ветку службы агента сервера и параметр ImagePath. В конец строки запуска добавьте ключ -debug. Если планируется отладка через HTTP (например, для отладки web-сервисов или при работе через сервер взаимодействия), добавьте также -http. Сохраните изменения и перезапустите службу через оснастку services.msc или командой перезапуска.
- 1Остановите службу агента сервера 1С через services.msc
- 2Откройте regedit и найдите ветку службы агента сервера в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
- 3В параметре ImagePath добавьте в конец строки ключ -debug (при необходимости -http)
- 4Сохраните изменения и запустите службу заново
- 5Откройте конфигуратор и проверьте подключение предметов отладки
Важно не ошибиться с расположением ключа: -debug указывается в строке запуска исполняемого файла ragent.exe, а не в параметрах кластера в консоли администрирования. Изменение реестра вступает в силу только после перезапуска службы — до этого сервер продолжает работать со старыми параметрами.
Способ 2: включение отладки на сервере Linux
На Linux-платформе параметры запуска агента сервера задаются в unit-файле systemd или в скрипте запуска. Обычно unit-файл называется srv1cv8-*.service и располагается в каталоге /etc/systemd/system/ или /usr/lib/systemd/system/.
Откройте unit-файл в текстовом редакторе, найдите директиву ExecStart и добавьте в строку запуска ключ -debug. После сохранения выполните перечитывание конфигурации systemd и перезапуск службы:
sudo systemctl daemon-reload && sudo systemctl restart srv1cv8-8.3.*.serviceТочное имя службы зависит от версии платформы — его можно посмотреть командой systemctl list-units | grep srv1cv8. Если сервер запускается собственным скриптом, а не через systemd, ключ -debug добавляется непосредственно в этот скрипт в строку вызова ragent.
Выбор протокола отладки: TCP или HTTP
Платформа поддерживает два протокола отладки. Отладка по TCP — классический вариант, при котором конфигуратор подключается к серверу напрямую по сети. Отладка по HTTP работает через веб-сервер и нужна, когда конфигуратор и сервер разделены сетевыми ограничениями, а также для отладки в некоторых сценариях с web-клиентом и мобильной платформой.
Тип отладки выбирается в конфигураторе: меню Сервис → Параметры → вкладка «Отладка». Там же задаётся способ подключения предметов отладки — автоматический или ручной. Для отладки по HTTP на сервере должен быть указан ключ -http при запуске агента, а в параметрах конфигуратора — адрес сервера отладки.
Сравнение вариантов
Подходит для локальной сети, настраивается ключом -debug. Не работает через веб-сервер и может блокироваться межсетевыми экранами между конфигуратором и сервером.
Подходит, когда доступ к серверу возможен только через веб-сервер, а также для отладки web-клиента. Требует ключа -http при запуске агента и публикации отладочного интерфейса на веб-сервере.
Настройка конфигуратора и подключение предметов отладки
После перезапуска сервера с ключом отладки настройте конфигуратор. Откройте информационную базу в конфигураторе, перейдите в Сервис → Параметры → Отладка и убедитесь, что выбран нужный протокол. Затем откройте окно подключения предметов отладки: Отладка → Подключение.
В окне подключения отметьте типы предметов отладки, которые нужно отлаживать: «Сервер», «Фоновое задание», «HTTP-сервис» и другие. Если включён автоматический поиск, конфигуратор сам подключит доступные предметы. При ручном подключении предметы выбираются из списка — это удобно, когда на сервере работает много сеансов и нужен только конкретный.
После подключения установите точку останова в серверной процедуре и выполните действие в клиентском приложении, которое вызывает этот код. Если всё настроено верно, выполнение остановится в конфигураторе, станут доступны стек вызовов, значения переменных и табло.
Проверка результата и типичные ошибки
Проверить, что сервер действительно запущен в режиме отладки, можно двумя способами. Первый — посмотреть строку запуска процесса ragent.exe в диспетчере задач (вкладка «Подробности», столбец «Командная строка») или командой ps aux | grep ragent в Linux: там должен присутствовать ключ -debug. Второй — попытаться подключить предмет отладки «Сервер» в конфигураторе: если сервер не в режиме отладки, предмет не появится в списке.
Как проверить результат
В командной строке процесса присутствует -debug
Ключа нет — изменения реестра не применились или служба не перезапущена
Тип «Сервер» доступен для подключения
Предмет отсутствует — сервер запущен без отладки или выбран другой протокол
Выполнение останавливается в конфигураторе
Точка игнорируется — предмет отладки не подключён или код выполняется в другом сеансе
Наиболее частая ошибка — забыть перезапустить службу после изменения реестра. Вторая по распространённости — конфликт протоколов: сервер запущен с TCP-отладкой, а в конфигураторе выбран HTTP, или наоборот. Третья — точка останова установлена в модуле, который выполняется на клиенте, а не на сервере; в этом случае нужно проверить директивы компиляции модуля.
Ограничения и безопасная практика
Режим отладки — штатный механизм платформы, но он требует дисциплины. На время отладки рабочие процессы сервера работают медленнее, что заметно при высокой нагрузке. Кроме того, любой сотрудник с конфигуратором и сетевым доступом к серверу может подключиться к предметам отладки и увидеть данные в переменных, включая персональные данные и пароли, обрабатываемые в коде.
Рекомендуемая практика: выполнять отладку на копии базы или выделенном тестовом сервере, а на продуктивном включать режим только на время диагностики и сразу отключать после. Если отладка на боевом сервере неизбежна, ограничьте сетевой доступ к серверу отладки и предупредите пользователей о возможном замедлении работы.
Что важно запомнить
Отладка сервера 1С включается ключом -debug в строке запуска агента сервера (реестр Windows или systemd в Linux) с обязательным перезапуском службы. Протокол отладки в конфигураторе должен совпадать с параметрами сервера, а предметы отладки нужно подключить явно. После завершения работ режим отладки следует отключить.
Частые вопросы
Можно ли включить отладку без перезапуска службы сервера?
Нет. Параметр -debug читается агентом сервера только при запуске, поэтому перезапуск службы обязателен. Учтите, что перезапуск разорвёт все активные сеансы пользователей — планируйте операцию на нерабочее время или предупредите пользователей заранее.
Почему точка останова в серверном модуле не срабатывает?
Проверьте три вещи: сервер запущен с ключом -debug, предмет отладки «Сервер» подключён в конфигураторе, а код действительно выполняется на сервере (директивы компиляции модуля, вызов из клиентского контекста через серверную процедуру). Также убедитесь, что протокол отладки в параметрах конфигуратора совпадает с режимом сервера.
Как отлаживать фоновые задания?
В окне «Отладка → Подключение» подключите предмет отладки типа «Фоновое задание». Чтобы не пропустить быстро выполняющееся задание, включите автоматическое подключение предметов отладки в параметрах конфигуратора до запуска задания.
Нужен ли ключ -http для обычной отладки?
Нет, для классической отладки по TCP достаточно ключа -debug. Ключ -http требуется только при отладке по протоколу HTTP — например, когда конфигуратор и сервер разделены сетевыми ограничениями и взаимодействие идёт через веб-сервер.
Влияет ли режим отладки на работу пользователей?
Да, рабочие процессы в режиме отладки выполняют код медленнее, что при высокой нагрузке может ощущаться пользователями. Кроме того, при остановке на точке останова соответствующий сеанс блокируется. Поэтому на продуктивном сервере отладку включают только на время диагностики.
Как отключить режим отладки после завершения работ?
Удалите ключ -debug (и -http, если добавляли) из строки запуска службы — в реестре Windows или unit-файле systemd — и перезапустите службу агента сервера. После перезапуска убедитесь по командной строке процесса ragent, что ключи отсутствуют.