К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как включить HTTP-отладку в 1С

Как включить HTTP-отладку в 1С: настройка отладчика по протоколу HTTP, публикация базы на веб-сервере, отладка HTTP-сервисов и типичные ошибки.

Под HTTP-отладкой в 1С обычно понимают две разные задачи. Первая — перевод отладчика платформы с протокола TCP на протокол HTTP, что нужно, когда сервер 1С и конфигуратор разделены файрволом, работают через интернет или в кластере контейнеров. Вторая — отладка HTTP-сервисов прикладного решения, то есть возможность поставить точку останова в модуле HTTP-сервиса и поймать входящий запрос.

Обе задачи решаются штатными средствами платформы, но требуют согласованной настройки: со стороны сервера 1С или веб-сервера, со стороны конфигуратора и иногда со стороны клиентского приложения. Если настроить только одну сторону, предметы отладки не появятся в списке, и создаётся впечатление, что «отладка не работает».

Ниже разобраны оба сценария: включение отладки по протоколу HTTP для кластера и для файловой базы, публикация базы на веб-сервере, отладка HTTP-сервисов, проверка результата и типичные ошибки. Инструкции ориентированы на платформу 8.3; в более ранних версиях часть параметров может отсутствовать.

Что такое отладка по протоколу HTTP и когда она нужна

Классический отладчик 1С общается с сервером отладки по протоколу TCP через выделенные порты. Такая схема хорошо работает в локальной сети, но ломается, когда между конфигуратором и сервером стоит NAT, строгий файрвол, прокси или инфраструктура в облаке, где открывать диапазоны портов нельзя или нежелательно.

Режим отладки по HTTP решает эту проблему: трафик отладки идёт через стандартный веб-стек — тот же веб-сервер (IIS или Apache), через который публикуется информационная база. Для сети это выглядит как обычные HTTP(S)-запросы, поэтому достаточно открыть доступ к опубликованной базе.

Выбирайте HTTP-отладку, если конфигуратор и сервер находятся в разных сетях, если администратор запрещает открытие нестандартных портов или если база доступна пользователям только через веб-клиент и тонкий клиент по HTTP. В локальной сети без ограничений проще остаться на TCP — там меньше звеньев настройки.

TCP или HTTP для отладки

Отладка по TCP

Подходит для локальной сети без ограничений. Требует открытых портов отладки на сервере, настройка минимальна.

Отладка по HTTP

Подходит для работы через интернет, файрволы и прокси. Требует публикации базы на веб-сервере и согласованной настройки.

Включение HTTP-отладки на сервере 1С

Для клиент-серверного варианта отладка включается параметрами запуска агента сервера 1С (ragent). Сервер нужно запустить с ключом отладки и указанием протокола HTTP. В Windows это делается через параметры запуска службы «Агент сервера 1С:Предприятия», в Linux — через параметры службы или скрипт запуска.

Типовой набор ключей выглядит так: -debug включает режим отладки, -debug -http переводит отладку на протокол HTTP. После изменения параметров службу необходимо перезапустить — без перезапуска новые ключи не применяются. Учтите, что работа сервера в режиме отладки снижает производительность, поэтому на продуктивных базах режим включают только на время поиска проблемы.

bash
ragent -debug -http

Для файловой базы, работающей непосредственно, отладка по HTTP не требуется — конфигуратор подключается к ней напрямую. Но если файловая база опубликована на веб-сервере и пользователи работают через него, отладка ведётся именно через публикацию, и настраивается она на стороне веб-сервера, о чём ниже.

Публикация базы на веб-сервере с разрешённой отладкой

Ключевое звено HTTP-отладки — публикация информационной базы на веб-сервере. Выполняется она из конфигуратора: меню «Администрирование» → «Публикация на веб-сервере». В диалоге укажите имя публикации, каталог и тип веб-сервера (IIS или Apache).

Для отладки важны два момента. Во-первых, в настройках публикации должна быть разрешена отладка — соответствующий флаг в диалоге публикации (и параметр в файле настроек публикации default.vrd). Во-вторых, веб-сервер должен иметь права на запуск расширения 1С и доступ к каталогу публикации; без этого база либо не откроется, либо отладочные запросы будут отклоняться.

После публикации проверьте, что база открывается в браузере или тонком клиенте по адресу публикации. Если само подключение не работает, отладку настраивать бессмысленно — сначала устраните проблемы публикации: права, версию компоненты веб-сервиса, соответствие разрядности веб-сервера и модулей 1С.

Порядок включения HTTP-отладки
  1. 1
    Запустите сервер 1С с ключами -debug -http и перезапустите службу
  2. 2
    Опубликуйте базу на веб-сервере с разрешённой отладкой
  3. 3
    Проверьте, что база открывается по адресу публикации
  4. 4
    В конфигураторе в настройках отладки выберите протокол HTTP и укажите адрес публикации
  5. 5
    Включите автоматическое подключение нужных предметов отладки
  6. 6
    Запустите сеанс и убедитесь, что он появился в списке предметов отладки

Настройка конфигуратора для отладки по HTTP

Со стороны конфигуратора настройка выполняется в меню «Отладка» → «Подключение» и в параметрах отладки. Откройте настройки отладки и укажите использование протокола HTTP, задав адрес опубликованной базы (URL публикации на веб-сервере). Именно по этому адресу конфигуратор будет искать сервер отладки.

Далее включите автоматическое подключение предметов отладки: «Отладка» → «Автоматическое подключение». Отметьте те типы сеансов, которые нужно ловить: толстый и тонкий клиент, веб-клиент, фоновые задания, веб-сервисы, HTTP-сервисы. Без автоподключения сеансы не появятся в списке, и точки останова не сработают, даже если всё остальное настроено верно.

После настройки запустите прикладное решение в режиме отладки или подключитесь к уже работающему сеансу через «Отладка» → «Подключение». В списке доступных предметов отладки должен появиться нужный сеанс. Если список пуст — возвращайтесь к проверке публикации и ключей запуска сервера.

Отладка HTTP-сервисов прикладного решения

Отдельный практический сценарий — отладка модулей HTTP-сервисов, созданных в конфигурации. Здесь логика та же: код HTTP-сервиса исполняется на стороне сервера (или веб-сервера для файловой базы), поэтому отладчик должен быть подключён именно к этому сеансу, а не к вашему клиентскому.

Включите в автоматическом подключении предмет отладки «HTTP-сервис». Затем отправьте запрос к сервису — из браузера, Postman или внешней системы. Как только запрос попадёт в обработчик, исполнение остановится на точке останова в модуле HTTP-сервиса, и вы сможете смотреть параметры запроса, тело, заголовки и переменные.

Если точка останова не срабатывает, проверьте три вещи: что запрос реально доходит до сервиса (смотрите журнал веб-сервера или ответ сервиса), что URL запроса соответствует шаблону, заданному в свойствах HTTP-сервиса, и что сеанс HTTP-сервиса виден в списке предметов отладки. Короткоживущие сеансы HTTP-сервисов появляются и исчезают быстро, поэтому автоподключение обязательно.

Контрольные точки

Как проверить, что HTTP-отладка работает

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

Сеансы появляются после запуска клиента или запроса к сервису

Тревожный признак

Список пуст при работающих пользователях

Точка останова в коде
Норма

Исполнение останавливается, доступны переменные и стек вызовов

Тревожный признак

Код выполняется, но остановки нет

Доступность публикации
Норма

База открывается в браузере по адресу публикации

Тревожный признак

Ошибка 404/500 или запрос недоступен

Типичные ошибки и ограничения

Самая частая причина «неработающей» отладки — несогласованность сторон: сервер запущен без ключа отладки, публикация создана без разрешения отладки или конфигуратор указывает на другой адрес. Вторая по частоте причина — не включено автоматическое подключение предметов отладки нужного типа.

Отдельные ограничения: отладка по HTTP добавляет задержки по сравнению с TCP, что заметно при интенсивном пошаговом проходе; при работе через HTTPS нужен корректный сертификат, иначе подключение может отклоняться; на продуктивных кластерах режим отладки влияет на всех пользователей, поэтому для разбора проблем лучше выделять тестовый сервер или копию базы.

Типичные ошибки
01
Изменили параметры службы сервера, но не перезапустили её — ключи отладки не применились
02
Опубликовали базу без разрешения отладки — предметы отладки недоступны
03
Не включили автоподключение — сеансы HTTP-сервисов и фоновых заданий не попадают в список
04
Конфигуратор и клиент смотрят на разные публикации — сеанс не находится
05
Включили отладку на продуктиве и забыли выключить — снижение производительности и лишний риск

Безопасность и возврат к рабочему режиму

Режим отладки — это дополнительный канал доступа к исполняемому коду и данным. Публикацию с разрешённой отладкой не следует оставлять открытой в интернете: ограничьте доступ по IP, используйте аутентификацию веб-сервера и отключайте отладку сразу после завершения работ.

По окончании верните исходные параметры запуска службы сервера (уберите ключи отладки), перезапустите службу и при необходимости снимите разрешение отладки в настройках публикации. Зафиксируйте в рабочей документации, какие параметры менялись, — это избавит от расследований «почему база стала медленнее» спустя недели.

Итог

Что важно запомнить

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

Частые вопросы

Можно ли отлаживать файловую базу по HTTP без веб-сервера?

Нет. Файловая база, открытая напрямую, отлаживается локально без HTTP. Протокол HTTP становится актуален только когда база опубликована на веб-сервере и доступ к ней идёт через него.

Почему сеанс HTTP-сервиса не появляется в предметах отладки?

Чаще всего не включено автоматическое подключение предметов отладки типа «HTTP-сервис» либо запрос не доходит до сервиса. Проверьте ответ сервиса и журнал веб-сервера, затем настройки автоподключения в конфигураторе.

Влияет ли режим отладки на производительность?

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

Работает ли HTTP-отладка через HTTPS?

Да, но требуется корректный сертификат на веб-сервере. При самоподписанном или просроченном сертификате подключение отладчика может отклоняться.

Чем отладка по HTTP отличается от отладки HTTP-сервисов?

Первое — это транспорт между отладчиком и сервером 1С. Второе — отладка конкретных модулей HTTP-сервисов конфигурации. Это независимые вещи: HTTP-сервисы можно отлаживать и по TCP, если сетевая схема позволяет.

Точка останова стоит, но код не останавливается. Что проверить первым делом?

Убедитесь, что исполняется именно тот сеанс, к которому подключён отладчик, и что код реально выполняется на сервере, а не на клиенте. Затем проверьте, что сервер запущен с ключом отладки и служба после изменения параметров перезапускалась.