В практике администраторов и разработчиков 1С периодически возникает специфическая проблема: на одном и том же сервере 1С:Предприятие 8.3 серверная отладка по протоколу TCP/IP успешно функционирует в одной информационной базе, но отказывается работать в другой. При этом обе базы могут находиться на одном сервере приложений, а точка останова в серверном коде проблемной базы просто игнорируется платформой.
Рассмотрим подробно причины возникновения такой неполадки, проанализируем базовые и скрытые нюансы настройки сетевого взаимодействия кластера и разберем пошаговый алгоритм восстановления отладки.
Разберем основную причину, с которой чаще всего сталкиваются на практике. Если при добавлении рабочего сервера в консоли administration (или в свойствах информационной базы) указан IP-адрес (например, 192.168.1.10), а в списке баз у пользователя или в настройках подключения указано сетевое имя (например, server-1c), возникнет рассинхронизация при попытке платформы сопоставить отладочные сеансы.
Протокол TCP/IP при серверной отладке опирается на точное совпадение адресации и идентификаторов процессов rphost.exe. Когда клиентское приложение подключается к базе, использующей сетевое имя сервера, а кластер видит рабочий процесс через IP-адрес, менеджер кластера не может корректно перенаправить отладочные события разработчику.
Для устранения этой проблемы выполним следующие шаги:
server-1c).1C:Enterprise 8.3 Server Agent.Выясним еще одно важное условие: запущен ли сам агент сервера с разрешением отладки. Без параметра -debug серверный код не будет останавливаться ни для управляемых, ни для обычных форм.
Проанализируем процесс включения ключа отладки в реестре Windows:
services.msc).regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent
ImagePath и откроем его для редактирования.-debug в конец строки запуска (через пробел). Пример итоговой строки:
"C:\Program Files\1cv8\8.3.11.2867\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug
Посмотрим на настройки подключения со стороны Конфигуратора. Платформа 1С чувствительна к регистру символов и точному написанию имени информационной базы на сервере.
Проверим следующие моменты:
Trade_Base и trade_base могут восприниматься компонентами отладки как разные базы).Протокол отладки TCP/IP работает по схеме обратного соединения: сервер приложений 1С (процесс rphost.exe) самостоятельно инициализирует входящее TCP-подключение к компьютеру разработчика, на котором запущен Конфигуратор.
Если для одной базы отладка работает, а для другой — нет, это может быть связано со следующими факторами:
1560–1591. Если на сервере работает много рабочих процессов rphost.exe или активны несколько информационных баз, свободных портов для новых сеансов конкретной базы может не хватить.1cv8.exe или для диапазонов портов 1560–1591.hosts на сервере 1С:
C:\Windows\System32\drivers\etc\hosts
192.168.1.10 server-1c
192.168.1.50 dev-pc
Начиная с версии платформы 8.3.7, компания 1С рекомендует использовать отладку по протоколу HTTP вместо TCP/IP. HTTP-отладка избавлена от проблем с обратным соединением, так как весь трафик передается через единый порт отладочного сервера (по умолчанию 1550).
Рассмотрим, как перевести сервер на HTTP-отладку:
1C:Enterprise 8.3 Server Agent заменим ключ -debug на комбинацию -debug -http.Использование HTTP-протокола полностью снимает проблемы с блокировкой входящих портов на машине разработчика и решает большинство трудностей, связанных с резолвом сетевых имен в кластере.