Разработка и Конфигурация · 9 мин
Как подключить серверную отладку 1С
Как включить серверную отладку 1С: запуск сервера с ключом -debug, настройка конфигуратора, отладка по HTTP и TCP, типичные ошибки и их решение.
Серверная отладка в 1С нужна, когда точка останова находится в серверном коде: в общих модулях с признаком «Сервер», в обработчиках, вызываемых через серверные вызовы, в фоновых заданиях и регламентных процедурах. Без специальной настройки отладчик конфигуратора видит только клиентский контекст, и серверные точки останова просто игнорируются.
Подключение серверной отладки сводится к двум действиям: запуску сервера 1С (агента кластера) с ключом отладки и включению нужного режима отладки в параметрах конфигуратора. В зависимости от версии платформы используется либо протокол TCP, либо более современный протокол HTTP, который стал основным начиная с платформы 8.3.7 и обязательным в новых релизах.
Материал рассчитан на администраторов и разработчиков, работающих с клиент-серверным вариантом 1С. Для файловых баз отдельный сервер не требуется — там достаточно настроек конфигуратора, но и они описаны ниже.
Когда требуется серверная отладка и какие протоколы существуют
В клиент-серверной архитектуре код выполняется в двух процессах: на клиенте (тонкий, толстый или веб-клиент) и на сервере 1С (рабочие процессы rphost). Стандартный запуск отладки из конфигуратора подключается только к клиентскому процессу, поэтому серверный код выполняется «мимо» отладчика.
Платформа поддерживает два протокола отладки. Протокол TCP — классический, применялся в ранних версиях платформы и требует открытых портов диапазона отладки. Протокол HTTP — современный вариант, при нём отладочное взаимодействие идёт через веб-сервер (IIS или Apache) или встроенный механизм, что упрощает работу через межсетевые экраны. Начиная с платформы 8.3.7 рекомендуется HTTP, а в актуальных релизах он является вариантом по умолчанию.
Выбор протокола должен совпадать на двух сторонах: в параметрах запуска сервера и в настройках конфигуратора. Несовпадение — самая частая причина ситуации, когда «отладка включена, но точки не срабатывают».
Сравнение протоколов отладки
Подходит для старых версий платформы; требует открытых портов диапазона отладки и прямого сетевого доступа к серверу.
Рекомендуемый вариант для платформы 8.3.7 и новее; работает через веб-сервер, проще проходит через firewall, требует публикации отладочного интерфейса.
Подготовка: что проверить перед настройкой
Перед изменением параметров сервера убедитесь, что у вас есть права администратора на сервере 1С и доступ к консоли управления службой агента. Перезапуск агента сервера на время разрывает все сеансы пользователей, поэтому работы на продуктивном сервере проводите вне рабочего времени или на тестовой копии базы.
Также проверьте версию платформы: от неё зависит, какой протокол доступен и как именно задаются ключи запуска. Посмотреть версию можно в свойствах кластера в консоли администрирования или через «О программе» в клиенте.
Запуск сервера 1С с ключом отладки
На Windows агент сервера 1С обычно работает как служба. Чтобы добавить ключ отладки, откройте реестр или свойства службы и измените строку запуска исполняемого файла ragent.exe, добавив параметр -debug. Для отладки по HTTP дополнительно указывается ключ -http. После изменения строки запуска службу необходимо перезапустить.
Типовая строка запуска выглядит примерно так:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
На Linux параметры задаются в unit-файле systemd или в скрипте запуска агента — логика та же: добавить -debug (и -http при необходимости) к аргументам ragent и перезапустить сервис.
- 1Остановите службу «Агент сервера 1С:Предприятия» через services.msc
- 2Откройте реестр: HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent
- 3В параметре ImagePath добавьте в конец строки запуска ключи -debug -http
- 4Сохраните изменения и запустите службу
- 5Проверьте, что агент стартовал без ошибок в журнале событий
Настройка конфигуратора для серверной отладки
После перезапуска сервера откройте конфигуратор и перейдите в «Сервис → Параметры → Отладка». На вкладке выберите протокол отладки: «Отладка по TCP» или «Отладка по HTTP» — тот же, что задан ключами сервера. Для HTTP также укажите адрес веб-сервера, через который опубликована база.
Убедитесь, что установлен флаг «Разрешить отладку» и при необходимости включён автоматический поиск предметов отладки. Сохраните параметры и запустите отладку обычным способом (F5). Теперь в окне «Предметы отладки» (Отладка → Подключение) должны отображаться серверные процессы.
Если серверные процессы не появились автоматически, откройте «Отладка → Подключение», нажмите «Поиск» и вручную подключите нужные предметы отладки — например, процессы с типом «Сервер» или «Фоновое задание».
Отладка фоновых заданий и внешних соединений
Фоновые задания выполняются в отдельных процессах и не подключаются к отладчику автоматически. Чтобы отладить фоновое задание, откройте консоль заданий или дождитесь его запуска, затем через «Отладка → Подключение» найдите процесс типа «Фоновое задание» и подключите его. Точки останова в коде, вызываемом заданием, начнут срабатывать.
Альтернативный приём — принудительный запуск отладки из кода методом ВыполнитьОбработкуОповещения не требуется; достаточно в коде фонового задания на первой строке поставить точку останова и подключить процесс сразу после старта задания. Для длительных регламентных заданий удобно временно заменить их вызов из клиента через ФоновыеЗадания.Выполнить.
Веб-сервисы и HTTP-сервисы отлаживаются аналогично: их исполнение происходит на сервере, поэтому нужен включённый серверный режим отладки и подключённый предмет отладки соответствующего типа.
Проверка результата и типичные ошибки
Признак успешной настройки: при запуске отладки точка останова в серверном общем модуле останавливает выполнение, а в окне предметов отладки видны процессы типа «Сервер». Если клиентская точка срабатывает, а серверная нет — проблема почти всегда в несовпадении протокола или в том, что служба не была перезапущена после добавления ключа.
Как проверить результат
Видны процессы типа «Сервер» и «Клиент»
Только клиентский процесс — сервер запущен без -debug
Выполнение останавливается, доступен стек вызовов
Точка отображается неактивной (пустой кружок)
Совпадает с ключами запуска сервера (-http для HTTP)
Выбран TCP, а сервер запущен с -http, или наоборот
Ограничения и безопасность
Режим отладки заметно нагружает сервер: рабочие процессы обслуживают отладочные соединения, а при остановке на точке останова блокируется весь рабочий процесс, что может «подвесить» сеансы пользователей, попавшие на тот же rphost. Поэтому на продуктивных системах отладку включают точечно и на короткое время.
С точки зрения безопасности открытая отладка позволяет любому, кто подключился отладчиком, читать и изменять данные в памяти процессов. Ограничьте сетевой доступ к портам отладки и не оставляйте ключ -debug в постоянной конфигурации продуктивного кластера.
Для файловых баз серверная составляющая отсутствует: весь код выполняется в процессе клиента, поэтому достаточно стандартного запуска отладки из конфигуратора без каких-либо ключей и служб.
Что важно запомнить
Серверная отладка включается ключом -debug (и -http для протокола HTTP) в строке запуска агента сервера с последующим перезапуском службы и выбором того же протокола в параметрах конфигуратора. Фоновые задания подключаются вручную. На продуктивном сервере режим отладки держите включённым только на время работ.
Частые вопросы
Почему серверная точка останова отображается пустым кружком и не срабатывает?
Пустой кружок означает, что предмет отладки, в котором исполняется этот код, не подключён. Проверьте, что служба агента перезапущена с ключом -debug, протокол в конфигураторе совпадает с ключами сервера, а в окне «Отладка → Подключение» присутствует процесс типа «Сервер».
Нужно ли перезапускать сервер 1С после добавления ключа -debug?
Да, обязательно. Ключи читаются только при старте процесса ragent. Изменение строки запуска без перезапуска службы не даёт никакого эффекта.
Можно ли отлаживать серверный код без доступа к серверу?
Нет, включение режима отладки требует прав администратора сервера. Если доступа нет, попросите администратора включить отладку либо воспроизводите проблему на тестовой базе, развёрнутой локально в файловом варианте.
Чем отличается отладка по HTTP от отладки по TCP?
При отладке по HTTP взаимодействие идёт через веб-сервер, на котором опубликована база, поэтому не нужно открывать дополнительные порты. TCP-вариант требует прямого доступа к портам диапазона отладки сервера. Функционально для разработчика разницы нет — отличается только транспорт.
Влияет ли включённая отладка на работу пользователей?
Да. Рабочие процессы в режиме отладки работают медленнее, а остановка на точке останова блокирует весь процесс rphost вместе с чужими сеансами. Поэтому на продуктиве отладку включают кратковременно и по возможности на выделенном рабочем процессе или тестовом кластере.
Как отладить код, который выполняется только на мобильной платформе или в веб-клиенте?
Серверная часть отлаживается так же, как описано выше. Для клиентской части веб-клиента используется подключение предмета отладки соответствующего типа через «Отладка → Подключение», а для мобильной платформы — отладка по HTTP с указанием адреса мобильного устройства или эмулятора в параметрах конфигуратора.