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

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

Ситуация, когда программист 1С включает режим отладки на сервере, но точки останова в серверных модулях упорно игнорируются, является классической. Мы можем видеть, как отладчик прекрасно "ловит" клиентские события, но как только управление передается на сервер (например, при вызове процедуры &НаСервере или работе в модуле объекта), выполнение программы продолжается без остановки. Рассмотрим подробно, почему это происходит и как настроить окружение для полноценной разработки.

Разберем правильность включения флага отладки

Первым делом проанализируем, правильно ли прописан параметр запуска службы сервера 1С. Часто разработчики ограничиваются добавлением ключа -debug в свойствах службы через графическую оболочку Windows. Однако стоит учитывать, что надежнее всего проверять этот параметр непосредственно в реестре системы.

Рассмотрим последовательность действий для проверки через реестр:

  1. Откроем редактор реестра regedit.
  2. Перейдем по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (название может варьироваться в зависимости от версии платформы).
  3. Найдем параметр ImagePath.
  4. Убедимся, что в строке запуска присутствует флаг -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), а серверная — нет.

Для решения этой проблемы выполним следующие шаги:

Настроим автоматическое подключение в Конфигураторе

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

Рассмотрим алгоритм настройки:

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

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

Переход на протокол HTTP — современное решение

Начиная с версии платформы 8.3.7, компания 1С представила новый механизм отладки по протоколу HTTP. Он гораздо стабильнее работает в сложных сетях и через VPN. Если классическая TCP/IP отладка не "взлетает", рассмотрим переход на HTTP.

Для этого выполним следующие действия:

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

Дополнительные факторы и очистка кэша

Иногда причина кроется в специфических системных настройках. Рассмотрим еще несколько важных моментов:

Конфликт протоколов IPv4 и IPv6

Если сервер пытается отправить данные отладки на клиент по IPv6, а клиент настроен только на IPv4, связь не установится. Попробуем прописать соответствие IP и имени хоста в файле hosts или временно отключить IPv6 в свойствах сетевого адаптера.

Очистка кэша сеансов сервера

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

  1. Остановим службу сервера 1С.
  2. Перейдем в папку с данными сервера (обычно это srvinfo).
  3. Найдем и очистим содержимое папки snccntx. Там хранятся данные о сеансах, и их удаление (при выключенном сервере!) помогает сбросить некорректные состояния отладчика.
  4. Запустим службу снова.

Права пользователя службы

Убедимся, что пользователь, от имени которого запускается служба ragent, имеет полные права на папку srvinfo. Если прав недостаточно, сервер может физически не иметь возможности создать необходимые объекты для управления процессом отладки.

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

← На главную