Ситуация, когда программист 1С включает режим отладки на сервере, но точки останова в серверных модулях упорно игнорируются, является классической. Мы можем видеть, как отладчик прекрасно "ловит" клиентские события, но как только управление передается на сервер (например, при вызове процедуры &НаСервере или работе в модуле объекта), выполнение программы продолжается без остановки. Рассмотрим подробно, почему это происходит и как настроить окружение для полноценной разработки.
Первым делом проанализируем, правильно ли прописан параметр запуска службы сервера 1С. Часто разработчики ограничиваются добавлением ключа -debug в свойствах службы через графическую оболочку Windows. Однако стоит учитывать, что надежнее всего проверять этот параметр непосредственно в реестре системы.
Рассмотрим последовательность действий для проверки через реестр:
regedit.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (название может варьироваться в зависимости от версии платформы).ImagePath.-debug.Важный нюанс: ключ -debug должен располагаться в строке запуска так, чтобы он не "потерялся" среди кавычек. Проанализируем пример правильной строки:
"C:\Program Files\1cv8\8.3.18.1363\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
После внесения любых изменений в реестр или свойства службы, обязательно перезапустим службу 1C:Enterprise 8.3 Server Agent. Без перезапуска изменения не вступят в силу.
Если сервер запущен с нужным ключом, но отладка по-прежнему не работает, проблема, скорее всего, кроется в сетевых экранах (Firewall). Разберем механизм работы "классической" отладки по протоколу TCP/IP. В этом режиме не только клиент инициирует соединение с сервером, но и сервер пытается инициировать обратное соединение с клиентом, когда выполнение кода доходит до точки останова.
Проанализируем ситуацию: сервер 1С "видит" точку останова и посылает сигнал на компьютер разработчика. Если на компьютере разработчика (клиенте) включен брандмауэр Windows или сторонний антивирус, входящее соединение от сервера будет заблокировано. Именно поэтому клиентская отладка работает (ее инициирует сам 1cv8.exe), а серверная — нет.
Для решения этой проблемы выполним следующие шаги:
1560:1591. Эти порты должны быть открыты как на сервере (на входящие), так и на клиентской машине (на входящие).1cv8.exe в исключения.Даже если технически связь между сервером и клиентом установлена, Конфигуратор должен "знать", какие именно сеансы ему нужно отлаживать. Проанализируем настройки автоматического подключения.
Рассмотрим алгоритм настройки:
Без включенного флага Серверные вызовы отладчик будет игнорировать любые попытки сервера передать ему управление, даже если сетевой обмен настроен идеально.
Начиная с версии платформы 8.3.7, компания 1С представила новый механизм отладки по протоколу HTTP. Он гораздо стабильнее работает в сложных сетях и через VPN. Если классическая TCP/IP отладка не "взлетает", рассмотрим переход на HTTP.
Для этого выполним следующие действия:
-http вместо (или вместе) с -debug.http://имя_сервера:порт (обычно используется порт 1550).Преимущество HTTP-отладки в том, что она использует фиксированный порт и более лояльна к настройкам брандмауэра, так как работает по стандартным веб-протоколам.
Иногда причина кроется в специфических системных настройках. Рассмотрим еще несколько важных моментов:
Конфликт протоколов IPv4 и IPv6
Если сервер пытается отправить данные отладки на клиент по IPv6, а клиент настроен только на IPv4, связь не установится. Попробуем прописать соответствие IP и имени хоста в файле hosts или временно отключить IPv6 в свойствах сетевого адаптера.
Очистка кэша сеансов сервера
Бывают ситуации, когда в служебных файлах сервера накапливаются ошибки. Проанализируем способ "жесткой" очистки:
srvinfo).snccntx. Там хранятся данные о сеансах, и их удаление (при выключенном сервере!) помогает сбросить некорректные состояния отладчика.Права пользователя службы
Убедимся, что пользователь, от имени которого запускается служба ragent, имеет полные права на папку srvinfo. Если прав недостаточно, сервер может физически не иметь возможности создать необходимые объекты для управления процессом отладки.
Подводя итог, можно сказать, что решение проблем с отладкой всегда сводится к последовательной проверке трех звеньев: наличие флага в реестре, доступность портов в обе стороны и корректность настроек автоматического подключения в самом Конфигураторе.