Как настроить отладку веб-сервиса 1С на веб-сервере Apache?

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

Настройка отладки веб-сервисов в 1С:Предприятие часто вызывает трудности, особенно когда веб-сервер Apache и сервер приложений разнесены по разным машинам или работают под управлением разных операционных систем (например, связка Windows и Linux). Разберем по шагам, как обеспечить стабильное попадание в точки останова при вызове веб-сервисов.

Предварительная подготовка сервера 1С

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

Выясним, как это проверить и настроить:

  1. Откроем редактор реестра (для Windows) или конфигурационный файл службы (для Linux).
  2. Найдем строку запуска процесса ragent.exe.
  3. Убедимся, что в параметрах присутствует флаг -debug.
  4. Если используется современная платформа (8.3.12 и выше), крайне рекомендуется также добавить флаг -http, чтобы разрешить отладку по протоколу HTTP, которая работает стабильнее в сложных сетевых инфраструктурах.

Важно: После добавления ключа необходимо перезапустить службу сервера 1С. Помните, что включение отладки на рабочем сервере может незначительно снизить производительность, поэтому на высоконагруженных системах это следует делать с осторожностью.

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

Перейдем к самому важному этапу — настройке файла параметров публикации (.vrd). Этот файл сообщает модулю расширения веб-сервера, куда именно нужно отправлять отладочную информацию. Рассмотрим структуру элемента debug в файле:

<debug enable="true" url="tcp://10.7.12.108" />

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

После каждого изменения файла .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 [адрес_сервера] [порт].

Автоматическое подключение предметов отладки

Когда мы настроили сервер и публикацию, необходимо подготовить сам Конфигуратор. Выполним следующие действия:

  1. Зайдем в меню "Отладка" — "Подключение...".
  2. Нажмем кнопку "Настройка".
  3. Убедимся, что установлен флаг "Искать предметы отладки на удаленных компьютерах" (если отладка идет не на локальной машине).
  4. В списке "Автоматическое подключение" установим флажки для типов предметов "Веб-сервисы" и "HTTP-сервисы".

Если все настроено верно, при обращении к веб-сервису (например, из мобильного приложения или через SoapUI) выполнение кода остановится на вашей точке останова.

Альтернативный метод: использование общих модулей

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

В самом методе веб-сервиса мы оставляем только вызов этого модуля:


Процедура ВыполнитьОбмен(Параметры)
    // Вызов функции из общего модуля
    ИнтеграцияССервисом.ОбработатьДанные(Параметры);
КонецПроцедуры

Теперь для отладки логики нам не обязательно запускать веб-сервис. Мы можем создать внешнюю обработку, которая имитирует входные данные и вызывает ту же самую функцию ИнтеграцияССервисом.ОбработатьДанные. Это позволяет отладить 90% кода в комфортном режиме обычного сеанса.

Тонкости работы на Linux

Если ваш Apache запущен на Linux, проанализируем дополнительные риски. Системы безопасности, такие как SELinux или AppArmor, могут блокировать попытки процесса Apache установить сетевое соединение с вашим компьютером для целей отладки.

Для проверки попробуйте временно перевести SELinux в режим Permissive. Также убедитесь, что права на файлы модуля расширения 1С (wsap24.so) позволяют веб-серверу корректно с ними взаимодействовать. Не забывайте про лимиты времени: при пошаговой отладке Apache может разорвать соединение по таймауту. Увеличьте параметр Timeout в конфигурации httpd.conf до 3600 секунд на время проведения работ.

← На главную