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

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

Проблема, когда отладка успешно работает в клиентском коде, но «пролетает» мимо серверных процедур, является одной из самых частых при работе с клиент-серверной архитектурой 1С. Ситуация осложняется, когда на самом сервере приложений отладка работает, а с удаленного рабочего места разработчика — нет. Проанализируем причины этой проблемы и разберем пошагово методы её решения для платформы 8.3.10 и выше.

Проверка базовых настроек сервера (Параметр -debug)

Прежде всего, нам необходимо убедиться, что сервер 1С:Предприятия запущен в режиме отладки. Разберем, как это проверить. В реестре Windows на машине, где установлен сервер 1С (Srv1), в ветке службы ragent должен быть прописан параметр -debug.

Путь в реестре обычно выглядит так:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)

В параметре ImagePath должна присутствовать строка следующего вида:


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

Если параметра -debug нет, его нужно добавить и перезапустить службу 1C:Enterprise 8.3 Server Agent. Без этого флага сервер в принципе не будет предоставлять информацию о предметах отладки.

Настройка сетевой доступности и брандмауэра

Выясним причину, по которой отладка может работать локально на Srv1, но не работать с Srv2. При использовании стандартного протокола TCP сервер 1С должен иметь возможность инициировать обратное соединение с компьютером разработчика.

Рассмотрим важные нюансы настройки портов:

  1. Порты на сервере: На Srv1 должны быть открыты входящие порты 1540, 1541, а также диапазон портов рабочих процессов (по умолчанию 1560-1591).
  2. Брандмауэр на стороне клиента (Srv2): Это критический момент. Поскольку сервер «стучится» обратно к клиенту, на стороне Srv2 в Windows Firewall должны быть разрешены входящие соединения для приложения 1cv8.exe. Часто администраторы забывают про это, блокируя входящий трафик на рабочей станции разработчика.
  3. Разрешение имен DNS: Проанализируем ситуацию с сетевыми именами. Сервер приложений должен уметь разрешать сетевое имя Srv2 в правильный IP-адрес. Если Srv1 не может найти путь к Srv2 по имени, отладка не подключится. Рекомендуется проверить это командой ping Srv2, запущенной непосредственно с сервера приложений. При необходимости можно жестко прописать соответствие IP и имени в файле hosts.

Обход известной ошибки платформы 8.3.10–8.3.13

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

  1. Запустите «Конфигуратор» и начните отладку.
  2. Перейдите в меню Отладка — Подключение....
  3. В открывшемся окне найдите ваш серверный сеанс в списке «Доступные предметы отладки».
  4. Попробуйте нажать кнопку Отключить, а затем сразу Подключить.
  5. Убедитесь, что установлены флажки «Искать предметы отладки на сервере» и «Автоматическое подключение: Фоновые задания».

Этот простой маневр часто заставляет платформу «увидеть» контекст, который был потерян из-за внутренних ошибок кеширования соединений.

Переход на протокол HTTP (наиболее надежный способ)

Если классическая отладка по TCP продолжает работать нестабильно, перейдем к использованию протокола HTTP. Этот режим появился в 8.3.7 и в версии 8.3.10 работает вполне зрело. Его главное преимущество — использование одного порта и отсутствие необходимости в обратном соединении от сервера к клиенту, что снимает большинство проблем с брандмауэрами.

Разберем по шагам, как включить HTTP-отладку:

1. Настройка сервера 1С:

В строке запуска службы сервера в реестре замените флаг -debug на флаг -http. Если вы хотите использовать конкретный порт для сервера отладки (по умолчанию 1550), это можно настроить, но обычно достаточно простого включения режима.

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

"C:\Program Files\1cv8\8.3.10.2753\bin\ragent.exe" -srvc -agent ... -debug -http

2. Настройка Конфигуратора:

В «Конфигураторе» на машине разработчика (Srv2) выполните следующие действия:

После этого перезапустите «Конфигуратор» и сеанс отладки. Как правило, после перехода на HTTP проблемы с «незаходом» в серверные процедуры исчезают.

Дополнительные факторы: Фоновые задания и IPv6

Посмотрим на ситуацию шире. Иногда отладка не работает только для определенных вызовов.

Если ваш код исполняется в фоновом задании, проверьте настройки в окне Отладка — Подключение — Настройка автоматического подключения. Должна стоять галочка напротив пункта Фоновые задания. В противном случае отладчик будет игнорировать серверные вызовы, выполняемые в отдельных потоках.

Также проанализируем сетевой протокол IPv6. Платформа 8.3.10 иногда некорректно обрабатывает приоритеты протоколов. Если в вашей сети включен IPv6, но настроен не полностью, отладчик может пытаться использовать пустые или некорректные адреса. Попробуйте временно отключить IPv6 в свойствах сетевого адаптера на обеих машинах (Srv1 и Srv2), чтобы исключить этот фактор.

Резюме: Если отладка на сервере не работает, сначала проверьте флаг -debug и настройки брандмауэра на клиенте. Если это не помогает — попробуйте переподключить предметы отладки вручную или переведите систему на протокол HTTP, который является более устойчивым к сетевым ограничениям.

← На главную