Переход с классического «Конфигуратора» на 1C:EDT (Enterprise Development Tools) часто вызывает вопросы у разработчиков, особенно когда речь заходит о таких специфических задачах, как отладка веб-сервисов. В этой статье мы подробно разберем, как подготовить окружение, настроить среду разработки и решить типичные проблемы, когда отладчик «не видит» предмет отладки.
Прежде всего, нам необходимо уяснить ключевое техническое различие: в отличие от старого протокола TCP, который десятилетиями использовался в «Конфигураторе», среда EDT работает исключительно по протоколу HTTP. Это современный стандарт, который позволяет отлаживать код даже в тех случаях, когда сервер 1С и компьютер разработчика находятся в разных сетях или за сложными маршрутизаторами.
Рассмотрим первый критический шаг: запуск сервера «1С:Предприятия». Если ваш сервер запущен в обычном режиме или с параметром -debug (по умолчанию включающим TCP), отладка в EDT работать не будет. Нам нужно убедиться, что сервер переведен в режим отладки по HTTP. Для этого в строке запуска службы сервера должен присутствовать параметр:
-debug -http
Только после этого сервер начнет транслировать информацию о предметах отладки (включая сессии веб-сервисов) по протоколу HTTP.
Проанализируем ситуацию, когда сервер запущен правильно, но веб-сервис все равно недоступен для анализа. Одной из самых частых причин является некорректная настройка публикации на веб-сервере (IIS или Apache). Если вы только настраиваете сервер, вам поможет установщик Apache HTTP Server для Windows. Для того чтобы веб-сервис «сообщил» системе отладки о своем запуске, файл публикации default.vrd должен содержать специальный блок конфигурации.
Разберем структуру этого блока. Откроем файл default.vrd, который обычно находится в каталоге публикации вашего веб-сервиса, и найдем (или создадим) секцию <debug>. Пример корректной настройки выглядит следующим образом:
<debug
enable="true"
url="http://адрес_сервера_отладки" />
Разберем параметры подробнее:
http://localhost, но в корпоративной среде здесь указывается адрес сервера, где запущена служба dbgs.Важный нюанс: после любого изменения в файле default.vrd мы обязательно должны перезапустить веб-сервер (IIS или Apache), чтобы новые настройки вступили в силу.
Теперь перейдем непосредственно к интерфейсу 1C:EDT. Выясним, почему у многих пользователей пункт «Веб-сервисы» в меню отладки бывает неактивен. В EDT управление предметами отладки реализовано иначе, чем в «Конфигураторе». Нам нужно настроить «Конфигурацию отладки».
Выполним следующие шаги:
В появившемся окне мы увидим список типов приложений. Нам необходимо отметить флажком пункт «Веб-сервис». Рассмотрим также полезный совет: часто логика веб-сервиса инициирует выполнение фоновых заданий. Чтобы не потерять контекст при переходе из веб-сервиса в фоновый процесс, рекомендуем сразу установить флажок и на пункте «Фоновые задания».
В сложных сетевых топологиях, когда разработка ведется удаленно, нам не обойтись без службы отладки dbgs. Посмотрим, как это работает. Автономный сервер отладки выступает посредником между предметом отладки (веб-сервисом) и отладчиком (EDT).
В параметрах EDT (меню «Окно» -> «Параметры» -> «1С:Предприятие» -> «Отладка») мы можем указать адрес этого внешнего сервера. Если ваша компания использует централизованный сервер отладки, убедитесь, что в поле «Адрес сервера отладки» указан верный хост и порт (по умолчанию 1560). Проанализируем состояние сети: порты в диапазоне 1560-1591 должны быть открыты на брандмауэре как на сервере, так и на рабочей станции разработчика.
Если мы выполнили все настройки, но отладка по-прежнему не работает, разберем типичные ошибки:
.vrd указано имя сервера, а веб-сервер не может его разрешить в IP-адрес, попытка подключения к отладке завершится по тайм-ауту. Попробуйте использовать IP-адрес вместо имени хоста в параметре url.Разберем ситуацию, когда веб-сервис запущен в контейнере Docker. Это требует особого внимания к пробросу портов. Для успешной отладки нам нужно пробросить не только 80/443 порты для самого веб-сервиса, но и обеспечить сетевую доступность сервера отладки изнутри контейнера. В этом случае в файле default.vrd параметр url должен указывать на адрес хостовой машины или внешнего dbgs, доступного из контейнерной сети.
Подводя итог, можно сказать, что механизм отладки веб-сервисов в EDT гораздо мощнее и гибче старого метода, но требует более тщательной предварительной настройки инфраструктуры. Следуя приведенным шагам, мы сможем создать стабильную среду для разработки и оперативного поиска ошибок в коде веб-сервисов.