Как исправить ошибку «Неверно указан протокол отладки: на сервере — http, в запускаемом приложении — tcp» в веб-клиенте 1С?

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

Разберем типичную проблему, с которой сталкиваются разработчики при переходе на отладку по протоколу HTTP в платформе 1С:Предприятие 8.3. Ситуация выглядит следующим образом: служба сервера 1С запущена с параметром -http, в конфигурации включена поддержка отладки по HTTP, однако при попытке подключиться к информационной базе через браузер возникает ошибка: Неверно указан протокол отладки: на сервере - "http", в запускаемом приложении - "tcp". Проанализируем причины возникновения этой коллизии и детально рассмотрим способы её устранения.

Выясним причину ошибки: конфликт возникает из-за расхождения настроек публикации на веб-сервере (Apache или IIS) и фактических параметров службы кластера 1С. В каталоге публикации базы лежит файл конфигурации default.vrd. Если публикация создавалась до того, как на сервере включили HTTP-отладку, в дескрипторе отладки прописан протокол TCP либо он не указан вовсе (в этом случае платформа пытается использовать TCP по умолчанию). Когда веб-клиент обращается к базе, он считывает параметры из default.vrd и инициализирует отладку по TCP, тогда как служба ragent ожидает исключительно подключения по протоколу HTTP.

Способ 1. Повторная публикация информационной базы из Конфигуратора

Рассмотрим самый простой способ, который штатно устраняет несоответствие параметров. Если веб-сервер и Конфигуратор запущены на одной машине или доступна публикация через меню, выполним следующие шаги:

  1. Откроем Конфигуратор от имени администратора.
  2. Перейдем в главное меню: Администрирование — Публикация на веб-сервере....
  3. На вкладке Основные проверим параметры подключения к базе данных.
  4. Перейдем на вкладку Прочие, найдем блок параметров отладки, активируем опцию отладки и явно укажем протокол HTTP, а также адрес сервера отладки.
  5. Нажмем кнопку Опубликовать для обновления файла дескриптора и перезапуска конфигурации веб-сервера.

После повторной публикации платформа автоматически перезапишет файл default.vrd, подставив верный протокол взаимодействия.

Способ 2. Ручная правка файла default.vrd

Если веб-сервер Apache или IIS развернут на отдельном удаленном сервере, повторная публикация из локального Конфигуратора может быть недоступна. В таком случае разберем, как скорректировать настройки напрямую в файле конфигурации публикации:

  1. Перейдем в каталог на сервере, где опубликована база данных (каталог, указанный в директивах веб-сервера, содержащий файл default.vrd).
  2. Откроем файл default.vrd в любом текстовом редакторе с правами администратора.
  3. Найдем тег <debug>. Посмотрим на типовую некорректную запись: она либо содержит protocol="tcp", либо не имеет атрибута protocol.
  4. Приведем строку с настройками отладки к следующему виду:

<debug enable="true"
       protocol="http"
       url="http://адрес_сервера_отладки:1550"/>
  1. Сохраним изменения в файле default.vrd.
  2. Перезапустим веб-сервер (службу Apache или соответствующий пул приложений IIS), чтобы изменения вступили в силу.

Способ 3. Переопределение протокола и адреса через URL браузера

Бывают ситуации, когда веб-клиент необходимо экстренно подключить к конкретному отладчику без изменения общих настроек веб-сервера. Для этого используем передачу параметров напрямую через адресную строку браузера.

Допишем в конец URL веб-клиента специальные параметры запуска отладки:

http://адрес_сервера/имя_базы/?debug=http&debuggerurl=http://хост_отладчика:1550

Параметр debug=http принудительно задает протокол отладки для текущего клиентского сеанса, переопределяя значение по умолчанию из файла публикации, а параметр debuggerurl сообщает браузеру адрес отладочного сервиса.

Важные сетевые особенности и системные ограничения

Проанализируем сопутствующие настройки, которые критически важны для стабильной работы отладки по HTTP:

  1. Порты отладки: в клиент-серверном варианте сервер отладки по протоколу HTTP по умолчанию ожидает входящие подключения на порту 1550. Убедимся, что на стороне сервера этот порт не заблокирован локальным брандмауэром или внешними сетевыми фильтрами.
  2. Единый протокол в кластере: служба ragent не поддерживает смешанный режим. Если сервер запущен с ключом -http, все участники процесса разработки (Конфигуратор, тонкие клиенты, веб-клиенты, внешние соединения через comcntrcfg.xml) обязаны переключиться на протокол HTTP.
  3. Автоматическое подключение предметов отладки: чтобы точки останова срабатывали в веб-сеансе, откроем в Конфигураторе меню Отладка — Подключение... — Настройка автоматического подключения и убедимся, что флажки для клиентских и серверных модулей установлены.
← На главную