Настройка отладки веб-сервисов в 1С:Предприятие часто вызывает трудности, особенно когда веб-сервер Apache и сервер приложений разнесены по разным машинам или работают под управлением разных операционных систем (например, связка Windows и Linux). Разберем по шагам, как обеспечить стабильное попадание в точки останова при вызове веб-сервисов.
Прежде всего, проанализируем состояние сервера приложений 1С. Для того чтобы отладка была возможна в принципе, служба сервера должна быть запущена со специальным ключом. По умолчанию сервер 1С запускается в обычном режиме, который игнорирует запросы на отладку.
Выясним, как это проверить и настроить:
ragent.exe.-debug.-http, чтобы разрешить отладку по протоколу HTTP, которая работает стабильнее в сложных сетевых инфраструктурах.Важно: После добавления ключа необходимо перезапустить службу сервера 1С. Помните, что включение отладки на рабочем сервере может незначительно снизить производительность, поэтому на высоконагруженных системах это следует делать с осторожностью.
Перейдем к самому важному этапу — настройке файла параметров публикации (.vrd). Этот файл сообщает модулю расширения веб-сервера, куда именно нужно отправлять отладочную информацию. Рассмотрим структуру элемента debug в файле:
<debug enable="true" url="tcp://10.7.12.108" />
Разберем атрибуты подробнее:
enable="true" — включает режим отладки для данной публикации.url — указывает адрес компьютера, на котором запущен Конфигуратор. Именно здесь чаще всего совершается ошибка. Если указать localhost, веб-сервер будет искать отладчик на самом себе (на сервере Apache), а не на вашем рабочем компьютере.protocol="http" url="http://имя_сервера_отладки".После каждого изменения файла .vrd необходимо перезапускать веб-сервер Apache, чтобы изменения вступили в силу.
Проанализируем ситуацию, которая часто становится "камнем преткновения": несоответствие строк подключения. Система отладки 1С крайне чувствительна к тому, как именно прописан адрес информационной базы в Конфигураторе и в файле публикации.
Рассмотрим пример. Если в Конфигураторе база добавлена по имени сервера:
Srvr="massa";Ref="UT10";
А в файле .vrd или в настройках публикации указан IP-адрес:
Srvr="10.7.12.108";Ref="UT10";
В этом случае отладка работать не будет. Предмет отладки просто не появится в списке доступных. Выясним причину: для отладчика это две разные базы. Рекомендуем всегда использовать единообразное написание, желательно через IP-адрес, чтобы избежать проблем с разрешением имен DNS.
Посмотрим на сетевой аспект. Отладка требует открытия определенного диапазона портов. Для протокола TCP это обычно порты 1560–1591. Если между вашим компьютером и сервером Apache (или сервером 1С) стоит фаервол, эти порты должны быть открыты для входящих и исходящих соединений.
В случае с Linux (Ubuntu), даже если вы выполнили команду ufw disable, стоит проверить настройки iptables и убедиться, что порты не блокируются на уровне провайдера или сетевого оборудования. Проверить доступность порта можно командой telnet [адрес_сервера] [порт].
Когда мы настроили сервер и публикацию, необходимо подготовить сам Конфигуратор. Выполним следующие действия:
Если все настроено верно, при обращении к веб-сервису (например, из мобильного приложения или через SoapUI) выполнение кода остановится на вашей точке останова.
Рассмотрим "гениальное" и простое решение, если настроить прямую отладку не удается. Весь основной функционал веб-сервиса можно вынести в отдельный общий модуль с признаком "Сервер".
В самом методе веб-сервиса мы оставляем только вызов этого модуля:
Процедура ВыполнитьОбмен(Параметры)
// Вызов функции из общего модуля
ИнтеграцияССервисом.ОбработатьДанные(Параметры);
КонецПроцедуры
Теперь для отладки логики нам не обязательно запускать веб-сервис. Мы можем создать внешнюю обработку, которая имитирует входные данные и вызывает ту же самую функцию ИнтеграцияССервисом.ОбработатьДанные. Это позволяет отладить 90% кода в комфортном режиме обычного сеанса.
Если ваш Apache запущен на Linux, проанализируем дополнительные риски. Системы безопасности, такие как SELinux или AppArmor, могут блокировать попытки процесса Apache установить сетевое соединение с вашим компьютером для целей отладки.
Для проверки попробуйте временно перевести SELinux в режим Permissive. Также убедитесь, что права на файлы модуля расширения 1С (wsap24.so) позволяют веб-серверу корректно с ними взаимодействовать. Не забывайте про лимиты времени: при пошаговой отладке Apache может разорвать соединение по таймауту. Увеличьте параметр Timeout в конфигурации httpd.conf до 3600 секунд на время проведения работ.