Почему не работает отладка на сервере в 1С 8.3 и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

Ситуация, когда точки останова срабатывают в клиентских процедурах &НаКлиенте, но игнорируются в серверных &НаСервере или в модулях объектов, является одной из самых распространенных проблем при настройке рабочего окружения разработчика 1С. Это особенно критично при работе с тяжелыми конфигурациями, такими как 1С:Комплексная автоматизация 2.4 или ERP, где основная бизнес-логика сосредоточена именно на стороне сервера.

В этой статье мы подробно проанализируем причины возникновения этой проблемы, разберем различия в настройке для файлового и клиент-серверного вариантов работы и изучим современные методы отладки по протоколу HTTP.

Определяем режим работы базы данных

Прежде чем приступать к глубоким настройкам системы, нам необходимо выяснить, в каком режиме запущена база. Это ключевой момент, так как методы включения отладки для файлового и клиент-серверного вариантов кардинально различаются. Проанализируем ситуацию: если вы пытаетесь найти службу 1C:Enterprise 8.3 Server Agent (ragent) в списке служб Windows и не находите ее, или ее настройка не дает результата, скорее всего, вы работаете в файловом режиме.

В файловом режиме серверные вызовы эмулируются самой платформой внутри одного процесса 1cv8.exe. Настройка службы ragent в этом случае абсолютно бессмысленна, так как она просто не участвует в работе вашей базы.

Настройка отладки в файловом режиме

Если ваша база находится в файловом варианте (путь к базе начинается с File=...), выполним следующие шаги для включения отладки серверного кода:

  1. Откроем Конфигуратор вашей информационной базы.
  2. Перейдем в меню Сервис — Параметры.
  3. На вкладке Запуск 1С:Предприятия выберем подпункт Дополнительно.
  4. Убедимся, что установлена галочка Устанавливать режим отладки.
  5. В поле ниже выберем значение Сервер.

Эти действия заставляют платформу при запуске сеанса «Предприятия» из конфигуратора автоматически переходить в режим, позволяющий отладчику перехватывать выполнение кода в серверных контекстах. Если после этих настроек точки останова все еще не срабатывают, попробуйте зайти в меню Отладка — Подключение и проверить, отображается ли ваш сеанс в списке доступных предметов отладки.

Настройка клиент-серверного режима (ключ -debug)

В клиент-серверном варианте за выполнение серверного кода отвечает отдельный процесс — rmngr.exe или rphost.exe, управляемые службой агента сервера. По умолчанию отладка на сервере выключена для экономии ресурсов. Чтобы ее включить, нам нужно добавить параметр -debug в строку запуска службы.

Рассмотрим пошагово, как это сделать через реестр Windows, так как это самый надежный способ:

  1. Нажмем Win + R, введем regedit и нажмем Enter.
  2. Перейдем по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent... (название может меняться в зависимости от версии платформы).
  3. Найдем параметр ImagePath.
  4. В значении этого параметра в самом конце строки через пробел добавим -debug.

Пример правильной строки запуска службы:


"C:\Program Files\1cv8\8.3.19.1264\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Важно: После изменения реестра необходимо обязательно перезапустить службу 1С:Предприятия через консоль services.msc, чтобы изменения вступили в силу.

Переход на протокол HTTP для отладки

Начиная с версии платформы 8.3.7, разработчики 1С добавили возможность отладки по протоколу HTTP вместо классического TCP. Это решает массу проблем, связанных с блокировками портов брандмауэрами и нестабильной работой в сложных сетях. Проанализируем, как переключиться на этот современный метод.

Для настройки сервера 1С нам необходимо в ту же строку запуска службы (в реестре), где мы прописывали -debug, добавить параметр -http. Это укажет серверу использовать HTTP-отладку.

Затем выполним настройку в самом Конфигураторе:

  1. Зайдем в Сервис — Параметры — Отладка.
  2. Переключим переключатель Протокол отладки на HTTP.
  3. В поле Адрес отладчика можно оставить значение по умолчанию или указать адрес вашего сервера.

Использование HTTP-отладки позволяет избежать проблем с динамическим диапазоном портов TCP, который часто блокируется антивирусами.

Отладка фоновых заданий

Иногда разработчик сталкивается с тем, что обычный серверный код отлаживается, а код, запущенный через ФоновыеЗадания.Выполнить(), — нет. Выясним причину: фоновые задания выполняются в отдельных сеансах, к которым отладчик не подключается автоматически.

Чтобы исправить это, в Конфигураторе выполним следующие действия:

  1. Меню Отладка — Подключение...
  2. В открывшемся окне нажмем кнопку Настройка.
  3. Установим флажок Автоматическое подключение: Фоновые задания.

Теперь, как только на сервере стартует фоновое задание, отладчик «подцепит» его, и выполнение остановится на нужной точке останова.

Сетевые настройки и брандмауэр

Если все параметры прописаны, но отладка не работает, проанализируем состояние сетевой защиты. При использовании TCP-отладки сервер 1С использует порты из диапазона 1560–1591. Разберем, что нужно сделать:

Очистка кэша отладки

В редких случаях проблема кроется в поврежденных временных файлах сессий отладки. Рассмотрим процедуру очистки:

  1. Завершим работу всех сеансов 1С и Конфигуратора.
  2. Перейдем в каталог %LocalAppData%\1C\1cv8\.
  3. Найдем папки с именами-идентификаторами (например, 8e2...) и внутри них найдем папку dbgs.
  4. Удалим содержимое этой папки.

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

Подводя итог, можно сказать, что решение проблемы с серверной отладкой в 1С 8.3 почти всегда сводится к трем вещам: правильному определению режима работы базы (файловая/серверная), корректному указанию ключа -debug и настройке автоматического подключения к фоновым заданиям. Помните, что современные версии платформы работают стабильнее через протокол HTTP, поэтому рекомендуем использовать именно его.

← На главную