Разработчики 1С часто сталкиваются с крайне неприятной ситуацией: при нажатии клавиши F5 в Конфигураторе клиентское приложение «1С:Предприятие» успешно запускается, однако точки останова в коде не срабатывают. Приходится каждый раз вручную открывать меню Отладка — Подключение и выбирать нужный сеанс. При этом сама отладка работает, что подтверждает работоспособность ключа запуска сервера, но автоматическая связь между Конфигуратором и запущенным сеансом не устанавливается.
В этой статье мы подробно разберем, почему ломается механизм автоматического подключения отладки в клиент-серверных базах, и рассмотрим пошаговые инструкции по устранению этой проблемы как для стандартного протокола TCP/IP, так и при переходе на современный протокол HTTP.
Прежде чем переходить к сложным сетевым настройкам, давайте исключим самую простую и банальную причину — сброс настроек отладки в самом Конфигураторе. Такое часто происходит после очистки кэша платформы или установки обновления.
Выполним проверку по шагам:
Если все указанные настройки установлены корректно, но автоматическое подключение по-прежнему не работает, перейдем к анализу сетевого взаимодействия.
При использовании классического протокола TCP/IP механизм работы отладчика устроен следующим образом: Конфигуратор запускает «1С:Предприятие», после чего сервер 1С пытается самостоятельно инициировать обратное сетевое подключение к компьютеру разработчика (клиенту). Для этого используются порт 1550, а также динамический диапазон портов от 1560 до 1591.
Очень часто брандмауэр Windows или локальный антивирус на компьютере разработчика блокирует эти входящие пакеты от сервера. В результате ручное подключение (когда инициатором выступает клиент) работает, а автоматическое (когда сервер пытается «достучаться» до клиента при старте приложения) — блокируется.
Разберем, как решить эту проблему добавлением правил в брандмауэр Windows на клиентской машине:
firewall.cpl в строке выполнения Win+R).C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe
1cv8 в доверенные зоны антивирусного ПО.Также рекомендуется проверить файл hosts, расположенный по адресу C:\Windows\system32\drivers\etc\hosts на клиентской машине. В нем обязательно должна присутствовать корректная строка сопоставления локального хоста:
127.0.0.1 localhost
Если сетевые политики вашей компании жестко блокируют обратные TCP-соединения (например, вы работаете удаленно через VPN или NAT, где сервер физически не может отправить пакет на ваш внутренний IP-адрес), идеальным решением станет переход на протокол отладки по HTTP. Этот протокол доступен начиная с версии платформы 8.3.7.
При HTTP-отладке и Конфигуратор, и сеанс «1С:Предприятия» общаются через специального посредника — службу сервера отладки (модуль dbgs). Обратные вызовы от сервера к клиенту больше не требуются, что полностью решает проблему блокировок брандмауэром.
Рассмотрим, как перевести систему на HTTP-отладку:
"C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
-http указывает серверу использовать HTTP-протокол для отладки.http://имя_сервера:1550, либо оставим значение по умолчанию, если используется локальная отладка).Если автоматическая отладка не работает вообще (даже при ручном подключении список предметов отладки пуст), необходимо удостовериться, что служба сервера 1С:Предприятия действительно запущена в режиме отладки.
Проанализируем параметры запуска службы в реестре Windows:
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent...
ImagePath./debug....-d "C:\Program Files\1cv8\srvinfo"/debug, то параметр сольется с путем к каталогу данных, и сервер запустится в обычном рабочем режиме без поддержки отладки. Правильный вариант выглядит так:
"C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" /debug
services.msc).Выясним еще одну неочевидную причину сбоя автоматического подключения. Если на одном сервере 1С одновременно работают и используют TCP-отладку несколько программистов, у них могут конфликтовать порты отладки.
По умолчанию первый подключившийся разработчик занимает порт 1560. Сеанс второго разработчика сервер пытается привязать к следующему свободному порту (например, 1561 или 1562). Однако автоматический механизм подключения на клиентском ПК второго разработчика часто не может корректно определить этот сдвиг портов, из-за чего автоматическая привязка ломается, требуя ручного вмешательства.
В такой ситуации наиболее эффективным решением также является переход на протокол HTTP-отладки, так как он централизованно маршрутизирует все сессии разработчиков через один порт сервера отладки (dbgs) и полностью исключает подобные конфликты портов на клиентских машинах.