При переходе на протокол HTTP в отладке 1С:Предприятия многие разработчики сталкиваются с ситуацией, когда обычные сеансы и фоновые задания отлаживаются корректно, а внешние соединения (COM-соединения) упорно игнорируют настройки и не появляются в списке предметов отладки. Рассмотрим детально, почему это происходит, как правильно настроить конфигурационные файлы и какие нюансы платформы 8.3.18 и 8.3.19 могут мешать процессу.
Для начала разберем стандартный механизм включения отладки для COM-объектов. В отличие от обычного клиента, внешнее соединение не имеет графического интерфейса для настройки, поэтому параметры передаются через специальный файл comcntrcfg.xml. Проанализируем типовую структуру этого файла, которая должна обеспечивать работу по протоколу HTTP:
<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
<debugconfig debug="true" protocol="http" debuggerURL="http://ИМЯ_КОМПЬЮТЕРА:1550"/>
</config>
В данном примере мы указываем платформе, что необходимо включить режим отладки (debug="true"), использовать протокол HTTP и подключаться к конкретному серверу отладки по адресу debuggerURL. Важно помнить, что если вы используете локальную отладку, вместо имени компьютера можно указать localhost, однако для стабильности в корпоративных сетях лучше использовать полное имя (FQDN) или IP-адрес.
Выясним одну из самых частых причин, почему настройки из XML-файла не подхватываются. Внешнее соединение использует библиотеку comcntr.dll. Путь к файлу конфигурации жестко привязан к каталогу установки той версии платформы, библиотека которой зарегистрирована в системе. Проанализируем два сценария:
C:\Program Files (x86)\1cv8\conf\comcntrcfg.xml.C:\Program Files\1cv8\conf\comcntrcfg.xml.Важный момент: Внешнее соединение часто игнорирует профили пользователей. В отличие от 1cescmn.cfg, файл comcntrcfg.xml должен лежать именно в общей папке conf конкретной версии платформы. Если у вас установлено несколько версий (например, 8.3.18.1563 и 8.3.19.1229), убедитесь, что файл скопирован в каталоги обеих версий.
Проанализируем ситуацию, когда в системе "смешаны" версии. Если вы обновили платформу, но в реестре Windows осталась ссылка на comcntr.dll от старой версии (которая еще не поддерживала HTTP-отладку должным образом), отладка работать не будет. Рекомендуется выполнить перерегистрацию компоненты от имени администратора. Рассмотрим команды для командной строки:
regsvr32 "C:\Program Files\1cv8\8.3.18.1563\bin\comcntr.dll"
После регистрации библиотеки крайне желательно перезапустить процесс, инициирующий COM-соединение (например, службу сервера 1С или клиентское приложение).
Разберем условия, которые должны быть выполнены на стороне сервера отладки. Для работы по HTTP недостаточно просто включить настройку в конфигураторе. Процесс dbgs должен быть запущен с поддержкой этого протокола. Если вы используете отладку через сервер 1С, проверьте параметры запуска службы. В строке запуска должен присутствовать ключ -http.
Если при использовании сниффера трафика (например, Wireshark или Fiddler) мы видим, что предмет отладки даже не пытается инициировать HTTP-запрос к debuggerURL, это означает, что проблема на стороне "клиента" (самого COM-объекта), который не инициализировал подсистему отладки. Если же запросы идут, но отладчик их не видит — проблема в настройках самого сервера отладки или сетевых экранах.
Существует еще один способ заставить внешнее соединение "увидеть" сервер отладки, который часто оказывается надежнее, чем правка XML-файлов. Мы можем задать адрес отладчика через системную переменную окружения. Рассмотрим этот алгоритм:
http://ваш_компьютер:порт.Этот метод помогает обойти проблемы с правами доступа к папке Program Files и некорректным чтением comcntrcfg.xml в некоторых сборках платформы 8.3.18.
Проанализируем специфику конкретных версий, упомянутых в обсуждении. В релизах ветки 8.3.18 (включая 1563) и 8.3.19 зафиксировано несколько багов, связанных именно с HTTP-отладкой:
debuggerURL разрешается сначала в IPv6-адрес, который не прослушивается сервером отладки. В этом случае попробуйте указать прямой IPv4-адрес.Если после выполнения всех настроек (проверка comcntrcfg.xml, регистрация DLL, настройка dbgs) отладка так и не заработала, проанализируем следующие шаги:
comcntrcfg.xml следует изменить протокол на protocol="tcp". Как показывает практика, в 18-х релизах TCP-отладка для COM работает значительно стабильнее.Таким образом, мы выяснили, что отсутствие отладки внешнего соединения по HTTP чаще всего связано либо с неверным расположением конфигурационного файла (с учетом разрядности), либо с программными ошибками конкретных релизов 1С, которые не позволяют предмету отладки корректно зарегистрироваться на сервере.