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

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

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

Причина 1. Ограничение режима совместимости конфигурации для HTTP-отладки

Проанализируем работу механизма HTTP-отладки. Возможность использования протокола HTTP для отладки появилась в платформе 1С:Предприятие начиная с версии 8.3.7. Однако возможность работы данного механизма напрямую зависит от свойства Режим совместимости конфигурации.

Если в конфигурации установлен режим совместимости с версией 8.2.16 (или любой другой версией ниже 8.3.7), протокол HTTP-отладки работать не будет, даже если сама платформа обновлена до версии 8.3.9 или выше. В этом случае попытка использовать HTTP-сервер отладки кластера вернет ошибку о том, что сервер отладки не указан.

Решение: при режиме совместимости ниже 8.3.7 необходимо использовать стандартный протокол отладки TCP/IP, либо повысить (или отключить) режим совместимости конфигурации в окне свойств дерева конфигурации.

Причина 2. Служба сервера 1С запущен без ключа отладки

Для работы отладки в серверных вызовах по протоколу TCP/IP служба агента сервера 1С (ragent.exe) должна быть принудительно запущена с параметром -debug. Если этот параметр отсутствует, серверный процесс rphost.exe не передает информацию о выполнении кода отладчику конфигуратора.

Проверим и настроим запуск службы сервера 1С по шагам:

  1. Откроем реестр Windows на сервере приложений (regedit).
  2. Перейдем к ветке службы сервера 1С: HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent...
  3. Найдем параметр ImagePath и убедимся, что среди ключей запуска указан ключ -debug. Пример правильной строки запуска:
    
    "C:\Program Files\1cv8\8.3.x.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "C:\ProgramData\1C\1CEstart"
    
  4. Если ключ -debug отсутствует, добавим его через пробел (рекомендуется указывать его в начале списка ключей после пути к ragent.exe) и перезапустим службу 1C:Enterprise 8.3 Server Agent.

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

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

Рассмотрим порядок настройки конфигуратора:

  1. Откроем конфигуратор и перейдем в меню Сервис — Параметры — Отладка.
  2. Убедимся, что установлены флаги Устанавливать режим разрешения отладки и Начинать отладку при запуске.
  3. В поле выбора протокола выберем TCP/IP (если режим совместимости базы ниже 8.3.7).
  4. Перейдем в меню Отладка — Подключение... и нажмем кнопку Автоматическое подключение.
  5. В открывшемся окне установим флаги напротив пунктов Сервер и Фоновые задания. Это позволит отладчику автоматически подключаться к новым серверным сеансам и вызовам.

Причина 4. Сетевые блокировки и сопоставление сетевых имен

Отладка по протоколу TCP/IP требует двухсторонней сетевой связности: не только конфигуратор подключается к серверу 1С, но и рабочие процессы сервера (rphost.exe) устанавливают обратное соединение с компьютером разработчика.

Рассмотрим основные сетевые проблемы и способы их устранения:

  1. Брандмауэр и сетевые экраны: необходимо убедиться, что на сервере 1С и на клиентском компьютере в брандмауэре Windows открыт доступ для всех входящих и исходящих соединений по диапазону портов отладки (по умолчанию TCP-порты 1540–1591, 1550, 1562), а также добавлены в исключения процессы 1cv8.exe, ragent.exe, rmngr.exe и rphost.exe.
  2. Различное наименование сервера: если клиент подсоединяется к базе по IP-адресу, а сервер передает отладчику свое доменное имя (hostname), отладчик может не найти адрес для обратного подключения. Для решения этой проблемы рекомендуется прописать сетевое имя сервера и его IP-адрес в файле hosts на локальном компьютере: 192.168.1.100 server-1c-name
  3. Запуск из конфигуратора: для гарантированного совпадения контекстов подключения запускайте отлаживаемый сеанс непосредственно из конфигуратора клавишей F5 или подключайтесь к существующему сеансу через меню Отладка — Подключение.
← На главную