Как правильно настроить и выполнить отладку веб-сервиса в 1С:Предприятие?

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

Разработка веб-сервисов в 1С — задача ответственная, и одна из самых частых сложностей, с которой сталкиваются программисты, — это невозможность «поймать» момент выполнения кода на стороне сервера. Часто возникает ситуация, когда запрос уходит, данные вроде бы обрабатываются, но точка останова не срабатывает, или, как в случае автора вопроса, не удается достучаться до конкретного реквизита. Разберем по шагам, как настроить окружение, чтобы отладка работала стабильно.

Шаг 1. Настройка автоматического подключения в Конфигураторе

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

  1. Откроем пункт меню Отладка.
  2. Перейдем в подменю Подключение.
  3. В открывшемся окне нажмем кнопку Настройка автоматического подключения.
  4. Установим флажок напротив пункта Веб-сервисы.

После этого Конфигуратор будет пытаться автоматически «подцепить» любой сеанс веб-сервиса, который обращается к данной информационной базе, а инструмент для тестирования GET и POST запросов позволит инициировать нужный вызов. Однако, важно понимать: этого флажка достаточно только в том случае, если сервер 1С уже подготовлен к отладке на уровне системных настроек.

Шаг 2. Включение режима отладки на сервере 1С

Если вы установили флажок, но точка останова всё равно игнорируется, значит, сервер 1С запущен в обычном режиме. По умолчанию отладка на сервере выключена для экономии ресурсов. Рассмотрим подробнее, как это исправить для разных операционных систем.

Для ОС Windows:

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

  1. Запустим редактор реестра (regedit).
  2. Найдем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3... (название зависит от версии платформы).
  3. Найдем параметр ImagePath.
  4. В конец строки, после всех кавычек, добавим через пробел ключ -debug.
  5. Перезапустим службу сервера 1С:Предприятие через консоль «Службы».

Для ОС Linux:

В Linux-системах настройка выполняется через конфигурационные файлы. Выясним причину, если файл не найден: путь зависит от дистрибутива, обычно это /etc/sysconfig/srv1cv83 или /etc/default/srv1cv83. В файле нужно найти или добавить переменную SRV1CV8_DEBUG=1 и перезапустить демона сервера.

Шаг 3. Редактирование файла публикации default.vrd

При публикации веб-сервиса создается специальный файл описания — default.vrd. Он находится в каталоге на веб-сервере (Apache или IIS). Для успешной отладки этот файл должен содержать разрешение на передачу отладочной информации. Разберем структуру этого файла.

Вам необходимо найти секцию <base> и убедиться, что в ней присутствует атрибут debug. Пример правильной записи:


<point name="MyWebService"
       alias="ws1.1с"
       enable="true">
    <debug enable="true" url="tcp://localhost" />
</point>

Если вы используете современный протокол отладки по HTTP, адрес может выглядеть иначе, например: url="http://имя_сервера:порт". Без этой настройки веб-сервер просто «не поймет», что сеанс нужно передать отладчику Конфигуратора.

Шаг 4. Выбор протокола отладки: TCP против HTTP

Начиная с версии 8.3.7, платформа поддерживает два способа связи между отладчиком и сервером. Посмотрим на их отличия, чтобы выбрать подходящий:

Шаг 5. Модуль сеанса — «невидимый» барьер

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

Если в этой процедуре есть ошибки или стоят условия, которые некорректно отрабатывают для пользователя веб-сервиса, выполнение прервется. Попробуем поставить точку останова в самом начале УстановкаПараметровСеанса. Если отладчик там остановится, значит, настройки подключения верны, и проблему нужно искать в инициализации данных.

Шаг 6. Использование Журнала регистрации как вспомогательного инструмента

Если точка останова упорно не срабатывает, рассмотрим альтернативный метод диагностики. Иногда быстрее и проще записать значение проблемного реквизита в журнал регистрации, чтобы убедиться, что данные вообще доходят до сервера.

Пример использования функции записи:


ЗаписьЖурналаРегистрации("ОтладкаВебСервиса",
    УровеньЖурналаРегистрации.Предупреждение, , ,
    "Значение реквизита: " + Строка(НужныйРеквизит));

Это поможет вам понять, на каком этапе «теряется» значение: при передаче в параметрах запроса или уже внутри логики самого веб-сервиса. Кроме того, не забывайте про задержку подключения: иногда первый запрос к сервису уходит «вхолостую», пока отладчик инициализирует соединение. Повторный вызов обычно отрабатывает уже с перехватом управления.

← На главную