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

Программист IT и автоматизация бизнеса
← На главную

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

Посмотрим на типичный пример серверного вызова

Рассмотрим стандартный фрагмент кода управляемой формы внешней обработки, где клиент вызывает контекст сервера:


&НаКлиенте
Процедура Команда1(Команда)
    Сообщить("это клиент ");
    командаСервер();
КонецПроцедуры

&НаСервере
Процедура командаСервер()
    Сообщить("это сервер ");
КонецПроцедуры

Если точка останова установлена внутри процедуры командаСервер(), но управление в нее не заходит, хотя само сообщение в окно сообщений успешно выводится, это означает, что серверный предмет отладки не подключен к Конфигуратору либо сетевой трафик между рабочим местом и сервером приложений блокируется.

Шаг 1. Проверяем запуск службы кластера серверов 1С с параметром -debug

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

  1. Откроем редактор реестра regedit на машине, где установлен сервер 1С.
  2. Перейдем в ветку служб: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services и найдем службу агента сервера (например, 1C:Enterprise 8.2 Server Agent).
  3. Проверим значение строкового параметра ImagePath. Ключ -debug должен обязательно присутствовать среди параметров запуска.
  4. Обратим внимание на позицию параметра. Рекомендуется указывать -debug перед параметром -d, так как путь к каталогу служебных файлов, идущий после флага -d, должен быть отдельным аргументом:

Пример корректной строки запуска:

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

Важно: любые изменения в реестре вступают в силу только после полного перезапуска службы сервера «1С:Предприятия». Если изменить параметр, но не перезапустить службу, отладка на сервере работать не будет.

Шаг 2. Разбираем сетевые особенности: почему по RDP отладка работает, а с ПК — нет

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

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

Разберем основные причины сбоя сетевого взаимодействия:

  1. Брандмауэр на клиентском компьютере: разработчики часто открывают порты на сервере, забывая про свою рабочую станцию. Поскольку rphost подключается к Конфигуратору извне, брандмауэр Windows или сторонний антивирус на компьютере разработчика может блокировать входящие пакеты. Необходимо создать входящее правило брандмауэра для исполняемого файла 1cv8.exe на компьютере программиста.
  2. Сетевые экраны и антивирусы на сервере: блокировка исходящих или входящих TCP-соединений в диапазоне рабочих портов кластера (по умолчанию 1540, 1541, 1560–1591) и динамических портов отладчика.
  3. Неразрешимое сетевое имя клиента: сервер пытается достучаться до клиентской машины по ее имени. Если в корпоративной сети нет настроенного DNS-сервера или имя компьютера не резолвится в правильный IP-адрес, подключение обрывается. Чтобы решить эту проблему, пропишем соответствие IP-адреса и имени рабочей станции в файле hosts на сервере (каталог C:\Windows\System32\drivers\etc\hosts). Аналогично добавим имя и IP-адрес сервера в файл hosts на машине разработчика.
  4. Наличие нескольких сетевых интерфейсов или VPN: если на сервере или клиенте активно несколько сетевых адаптеров, пакеты обратного отладочного соединения могут уходить в неверный сетевой маршрут. Убедимся, что между машинами настроена прямая L3-маршрутизация без NAT.

Шаг 3. Настраиваем автоматическое подключение предметов отладки

Иногда серверный предмет отладки просто не захватывается Конфигуратором автоматически при переходе контекста. Проверим настройки в самом Конфигураторе:

  1. В главном меню Конфигуратора перейдем в раздел Отладка → Подключение...
  2. В открывшемся окне нажмем кнопку Настройка автоматического подключения...
  3. Убедимся, что установлены флаги для пунктов На сервере и Фоновые задания.
  4. Нажмем ОК и повторно проверим список доступных предметов отладки. Если серверный сеанс находится в списке доступных, но не подключенных предметов, подключим его вручную для проверки.

Шаг 4. Учитываем нюансы отладки внешних обработок

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

  1. Идентичность версий: если исходный код обработки был изменен и сохранен в Конфигураторе, но пользовательский сеанс предприятия продолжает работать со старой копией, точки останова станут неактивными. Необходимо закрыть обработку в клиенте 1С и открыть ее заново из обновленного файла.
  2. Программное открытие из двоичных данных: если обработка подключается из хранилища значений информационной базы или запускается через временный файл программным методом, Конфигуратор не сможет сопоставить открытый в редакторе файл с кодом, выполняющимся в памяти сервера. Для отладки таких модулей открывайте файл обработки вручную через меню «Файл» → «Открыть».

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

← На главную