Как настроить отладку веб-сервисов в 1C:EDT?

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

Переход с классического «Конфигуратора» на 1C:EDT (Enterprise Development Tools) часто вызывает вопросы у разработчиков, особенно когда речь заходит о таких специфических задачах, как отладка веб-сервисов. В этой статье мы подробно разберем, как подготовить окружение, настроить среду разработки и решить типичные проблемы, когда отладчик «не видит» предмет отладки.

Понимание протокола отладки в EDT

Прежде всего, нам необходимо уяснить ключевое техническое различие: в отличие от старого протокола TCP, который десятилетиями использовался в «Конфигураторе», среда EDT работает исключительно по протоколу HTTP. Это современный стандарт, который позволяет отлаживать код даже в тех случаях, когда сервер 1С и компьютер разработчика находятся в разных сетях или за сложными маршрутизаторами.

Рассмотрим первый критический шаг: запуск сервера «1С:Предприятия». Если ваш сервер запущен в обычном режиме или с параметром -debug (по умолчанию включающим TCP), отладка в EDT работать не будет. Нам нужно убедиться, что сервер переведен в режим отладки по HTTP. Для этого в строке запуска службы сервера должен присутствовать параметр:

-debug -http

Только после этого сервер начнет транслировать информацию о предметах отладки (включая сессии веб-сервисов) по протоколу HTTP.

Настройка файла публикации (.vrd)

Проанализируем ситуацию, когда сервер запущен правильно, но веб-сервис все равно недоступен для анализа. Одной из самых частых причин является некорректная настройка публикации на веб-сервере (IIS или Apache). Если вы только настраиваете сервер, вам поможет установщик Apache HTTP Server для Windows. Для того чтобы веб-сервис «сообщил» системе отладки о своем запуске, файл публикации default.vrd должен содержать специальный блок конфигурации.

Разберем структуру этого блока. Откроем файл default.vrd, который обычно находится в каталоге публикации вашего веб-сервиса, и найдем (или создадим) секцию <debug>. Пример корректной настройки выглядит следующим образом:


<debug 
    enable="true" 
    url="http://адрес_сервера_отладки" />

Разберем параметры подробнее:

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

Настройка автоматического подключения в EDT

Теперь перейдем непосредственно к интерфейсу 1C:EDT. Выясним, почему у многих пользователей пункт «Веб-сервисы» в меню отладки бывает неактивен. В EDT управление предметами отладки реализовано иначе, чем в «Конфигураторе». Нам нужно настроить «Конфигурацию отладки».

Выполним следующие шаги:

  1. Откроем меню «Выполнение» (Run) и выберем пункт «Настройки отладки» (Debug Configurations).
  2. Найдем нашу конфигурацию типа «Приложение 1С:Предприятие».
  3. Перейдем на вкладку «Предметы отладки» (Items to debug).
  4. Нажмем на кнопку «Настройка подключения предметов отладки».

В появившемся окне мы увидим список типов приложений. Нам необходимо отметить флажком пункт «Веб-сервис». Рассмотрим также полезный совет: часто логика веб-сервиса инициирует выполнение фоновых заданий. Чтобы не потерять контекст при переходе из веб-сервиса в фоновый процесс, рекомендуем сразу установить флажок и на пункте «Фоновые задания».

Использование автономного сервера отладки (dbgs)

В сложных сетевых топологиях, когда разработка ведется удаленно, нам не обойтись без службы отладки dbgs. Посмотрим, как это работает. Автономный сервер отладки выступает посредником между предметом отладки (веб-сервисом) и отладчиком (EDT).

В параметрах EDT (меню «Окно» -> «Параметры» -> «1С:Предприятие» -> «Отладка») мы можем указать адрес этого внешнего сервера. Если ваша компания использует централизованный сервер отладки, убедитесь, что в поле «Адрес сервера отладки» указан верный хост и порт (по умолчанию 1560). Проанализируем состояние сети: порты в диапазоне 1560-1591 должны быть открыты на брандмауэре как на сервере, так и на рабочей станции разработчика.

Решение проблем: почему пункт меню неактивен?

Если мы выполнили все настройки, но отладка по-прежнему не работает, разберем типичные ошибки:

  1. Несоответствие версий: Версия платформы 1С, на которой опубликован веб-сервис, должна строго соответствовать версии, указанной в свойствах проекта EDT. Даже минимальное различие в номерах сборки может привести к невозможности подключения.
  2. Проблемы с DNS: Если в файле .vrd указано имя сервера, а веб-сервер не может его разрешить в IP-адрес, попытка подключения к отладке завершится по тайм-ауту. Попробуйте использовать IP-адрес вместо имени хоста в параметре url.
  3. Кэширование настроек: Иногда EDT «запоминает» старые настройки подключения. Попробуйте нажать кнопку обновления в панели «Предметы отладки», чтобы принудительно опросить сервер.

Особенности работы в Docker и облачных средах

Разберем ситуацию, когда веб-сервис запущен в контейнере Docker. Это требует особого внимания к пробросу портов. Для успешной отладки нам нужно пробросить не только 80/443 порты для самого веб-сервиса, но и обеспечить сетевую доступность сервера отладки изнутри контейнера. В этом случае в файле default.vrd параметр url должен указывать на адрес хостовой машины или внешнего dbgs, доступного из контейнерной сети.

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

← На главную