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

Разработка и Конфигурация · 11 мин

Как сделать отладку на сервере 1С: пошаговая инструкция

Пошаговая инструкция по отладке на сервере 1С: ключ -debug в реестре, настройка агента, подключение предметов отладки, типичные ошибки и ограничения.

При клиент-серверном режиме работы 1С код модулей сервера, серверных общих модулей и обработчиков с директивой «&НаСервере» исполняется не на компьютере разработчика, а внутри рабочего процесса кластера серверов. Поэтому обычный запуск отладки в конфигураторе не позволяет остановить выполнение такого кода: точки останова просто не срабатывают. Чтобы отлаживать серверный код, нужно включить режим отладки на самом сервере 1С и правильно подключиться к предметам отладки.

Ниже разобраны два способа включения отладки (через реестр Windows и через строку запуска службы), настройка конфигуратора, особенности отладки HTTP/веб-сервисов и фоновых заданий, а также типичные ошибки, из-за которых серверная отладка «не видит» точек останова. Материал применим к типовым и самописным конфигурациям на платформе 8.3.

Что происходит при серверной отладке и когда она нужна

В трёхзвенной архитектуре 1С логика делится на клиентскую и серверную части. Клиентская часть исполняется в процессе тонкого или толстого клиента, а серверная — в рабочих процессах rphost кластера. Отладчик конфигуратора по умолчанию подключается только к клиентскому процессу, поэтому серверный код выполняется «мимо» точек останова.

Серверная отладка необходима, когда нужно проверить: процедуры и функции с директивой «&НаСервере», серверные общие модули, код проведения документов, выполняемый на сервере, обработчики web-сервисов и HTTP-сервисов, а также фоновые задания. Если ошибка возникает только на сервере — например, при обращении к данным или при вызове COM-объектов — без включения серверной отладки диагностировать её практически невозможно.

Важно понимать: включение режима отладки на сервере требует перезапуска службы агента сервера 1С. На продуктивной базе это означает кратковременное прерывание работы всех пользователей, поэтому работы следует планировать заранее или выполнять на тестовой копии базы.

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

Самый распространённый способ — добавить ключ -debug в параметры запуска службы агента сервера 1С через реестр Windows. Это делается непосредственно на компьютере, где установлен сервер 1С, под учётной записью с правами администратора.

Параметры службы хранятся в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Название подраздела зависит от версии платформы и выглядит примерно как «1C:Enterprise 8.3 Server Agent (x86-64)». Внутри находится параметр ImagePath — это строка запуска службы агента.

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

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

Альтернативные способы включения режима отладки

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

cmd
"C:\Program Files\1cv8\<версия>\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

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

Для отладки веб-сервисов, публикуемых через веб-сервер (IIS или Apache), дополнительно требуется, чтобы расширение веб-сервера работало с кластером, запущенным в режиме отладки, а в конфигураторе были включены соответствующие предметы отладки. В новых версиях платформы доступен также отладчик по протоколу HTTP, который включается ключом -debug -http и позволяет подключаться без прямого доступа к служебным портам кластера.

Настройка конфигуратора и подключение предметов отладки

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

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

Также проверьте общие настройки: «Сервис → Параметры → Отладка». Убедитесь, что выбран корректный протокол отладки (по TCP/IP или по HTTP — в соответствии с тем, как запущен сервер) и при необходимости укажите имя или адрес сервера. Если конфигуратор и сервер находятся на разных машинах, убедитесь, что сетевые порты отладки не блокируются брандмауэром.

Проверка, что серверная отладка работает

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

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

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

Список предметов отладки в окне «Отладка → Подключение»
Норма

Видны серверные рабочие процессы кластера

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

Отображаются только клиентские процессы или список пуст

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

При выполнении действия конфигуратор останавливается на строке кода

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

Точка останова отображается серым или игнорируется

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

Служба стартует, в строке запуска есть ключ -debug

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

Служба не стартует или ключ отсутствует

Если точка останова подсвечена, но не срабатывает, проверьте, что код действительно исполняется на сервере: процедура с директивой «&НаКлиенте» или вызов, выполняемый в контексте клиента, серверную отладку не задействует. Также убедитесь, что вы подключили предмет отладки до выполнения действия, а не после.

Отладка фоновых заданий и веб-сервисов

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

Для HTTP-сервисов и web-сервисов логика аналогична: включаются соответствующие типы предметов отладки, после чего вызов сервиса извне (например, из браузера или тестовой утилиты) приведёт к остановке на точке в модуле сервиса. Если вызов проходит, но отладчик молчит, проверьте, что публикация на веб-сервере указывает на нужную информационную базу, а кластер запущен с ключом -debug.

Маршрут решения

Как выбрать действие

Нужно отладить код с директивой «&НаСервере» или проведение документаВключите -debug на сервере и подключите серверные предметы отладки в конфигураторе
Ошибка возникает в фоновом заданииВ окне подключения отметьте тип «Фоновое задание» и запустите задание заново
Нужно отладить HTTP- или web-сервисВключите предметы отладки сервисов и выполните вызов сервиса извне
Нет доступа к серверу или перезапуск службы невозможенИспользуйте тестовую базу на локальном сервере или файловую копию базы, где серверный код отлаживается без кластера

Типичные ошибки и ограничения

Типичные ошибки
01
Ключ -debug добавлен, но служба не перезапущена — изменения в реестре не применяются к уже работающему процессу.
02
Опечатка в строке ImagePath — служба агента не стартует, пользователи теряют доступ к базам.
03
Несовпадение протокола отладки (TCP/IP в конфигураторе, HTTP на сервере) — серверные предметы не видны в списке подключения.
04
Точка останова стоит в клиентском коде — она никогда не сработает при серверной отладке, и наоборот.
05
Отладка оставлена включённой на продуктивном сервере надолго — режим отладки замедляет выполнение серверного кода и увеличивает нагрузку.
06
Порты кластера закрыты брандмауэром — конфигуратор с другой машины не может подключиться к серверным предметам отладки.

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

Итог

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

Серверная отладка 1С включается ключом -debug в параметрах запуска агента сервера с последующим перезапуском службы. Затем в конфигураторе через «Отладка → Подключение» выбираются серверные предметы отладки. Проверяйте совпадение протокола, тип кода (клиент/сервер) и не забывайте отключать режим отладки на продуктивном сервере после работ.

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

Почему точка останова в серверном модуле не срабатывает?

Наиболее частые причины: сервер запущен без ключа -debug, служба не перезапускалась после его добавления, в конфигураторе не подключены серверные предметы отладки либо выбран другой протокол отладки. Проверьте эти пункты последовательно, начиная со строки запуска службы.

Можно ли отлаживать серверный код без доступа к серверу 1С?

Да, если развернуть тестовую копию базы на локальном сервере 1С или перевести базу в файловый режим. В файловом варианте весь код исполняется в одном процессе, и точки останова в серверных модулях работают без дополнительной настройки. Это удобно для локализации логики, хотя не воспроизводит особенности клиент-серверного взаимодействия.

Опасно ли включать отладку на продуктивном сервере?

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

Как отладить фоновое задание, которое запускается регламентно?

В окне «Отладка → Подключение» отметьте тип предметов «Фоновое задание» до момента запуска задания. Когда планировщик создаст сеанс фонового задания, отладчик автоматически подключится к нему и остановится на точке останова в коде метода.

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

Отладка по HTTP использует протокол, совместимый с веб-инфраструктурой, и упрощает подключение через сети с ограничениями. На сервере она включается ключом -debug -http, а в конфигураторе выбирается соответствующий протокол в настройках отладки. Функционально оба варианта позволяют отлаживать тот же код.

Служба агента не запускается после правки реестра — что делать?

Откройте параметр ImagePath и проверьте синтаксис строки: все кавычки должны быть парными, ключ -debug добавлен через пробел в конец строки. Если ошибку найти не удаётся, верните исходное значение параметра, запустите службу и повторите правку аккуратно. События сбоя также фиксируются в журнале событий Windows.