К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как проверить веб-сервис в 1С: пошаговая инструкция

Как проверить веб-сервис в 1С: публикация, WS-ссылки, тестирование через браузер, SoapUI и код 1С. Разбор типичных ошибок и способов диагностики.

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

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

Материал подходит для двух ситуаций: вы опубликовали собственный веб-сервис в 1С и хотите его протестировать, либо вам нужно проверить подключение к чужому веб-сервису из 1С через WS-ссылку. Оба сценария разобраны ниже с конкретными действиями и признаками результата.

Что нужно подготовить перед проверкой

Для проверки потребуется минимум четыре вещи: адрес публикации сервиса, имя пользователя и пароль с правами на вызов, инструмент для отправки запросов и тестовые данные. Адрес публикации складывается из адреса веб-сервера, имени публикации базы и имени веб-сервиса, заданного в конфигураторе.

Уточните у администратора, на каком веб-сервере опубликована база — IIS или Apache, и как называется виртуальный каталог. Если публикацию делали вы сами, имя каталога видно в диалоге публикации в конфигураторе (Администрирование → Публикация на веб-сервере).

Отдельно проверьте, что у пользователя, под которым будет идти вызов, есть права на использование веб-сервиса. В конфигураторе у каждого веб-сервиса есть свойство с перечнем операций, а в ролях — право «Использование» на конкретный сервис. Отсутствие этого права — одна из самых частых причин отказа при внешне исправной публикации.

Проверка доступности сервиса через браузер

Первый и самый быстрый тест — запрос WSDL-описания. Откройте браузер и введите адрес вида: http://server/base/ws/ServiceName?wsdl. Если сервис опубликован корректно, браузер запросит логин и пароль, а затем покажет XML-документ с описанием операций, параметров и типов данных.

Ответ сервера сразу показывает, на каком уровне проблема. Ошибка 404 означает, что публикация не выполнена или адрес набран неверно. Ошибка 500 обычно указывает на сбой в расширении веб-сервера или недоступность базы. Запрос авторизации, который не принимает верный пароль, говорит о проблеме с аутентификацией на веб-сервере.

Контрольные точки

Как проверить результат

Запрос ?wsdl в браузере
Норма

Возвращается XML с описанием сервиса

Тревожный признак

404, 500 или бесконечный запрос пароля

Содержимое WSDL
Норма

Перечислены все операции сервиса

Тревожный признак

Операции отсутствуют или список устарел

Доступ без VPN/из внешней сети
Норма

WSDL открывается с тестовой машины

Тревожный признак

Сервис виден только с сервера

Тестирование операций через SoapUI или Postman

Полученный WSDL — это готовый контракт для тестового клиента. В SoapUI создайте новый SOAP-проект и укажите адрес WSDL: программа автоматически построит шаблоны запросов для всех операций. Останется заполнить параметры тестовыми значениями и настроить Basic-аутентификацию с логином пользователя 1С.

Postman тоже подходит, хотя и менее удобен для SOAP: запрос придётся формировать вручную как POST с XML-телом, заголовком Content-Type: text/xml и, при необходимости, заголовком SOAPAction. Этот способ полезен, когда нужно быстро отправить один запрос без создания проекта.

Успешный вызов возвращает SOAP-ответ с данными. Если приходит SOAP Fault — читайте текст ошибки: 1С передаёт туда описание исключения из кода операции, что сильно упрощает диагностику. Типичные сообщения: «Операция не найдена», ошибки преобразования типов XDTO, исключения из прикладного кода.

Порядок действий в SoapUI
  1. 1
    Создайте проект: File → New SOAP Project, укажите URL с ?wsdl
  2. 2
    Дождитесь загрузки списка операций и откройте Request 1 нужной операции
  3. 3
    В Auth выберите Basic и введите логин и пароль пользователя 1С
  4. 4
    Замените знаки вопроса в параметрах на тестовые значения
  5. 5
    Нажмите зелёную стрелку и изучите ответ: данные или SOAP Fault

Проверка веб-сервиса средствами самой 1С

Если нужно проверить вызов чужого сервиса из 1С или протестировать свой сервис «изнутри», используйте WS-ссылки. В конфигураторе добавьте объект WS-ссылка, укажите URL WSDL — платформа загрузит описание и создаст прокси-объект. Вызов в коде выглядит как обращение к операции через этот прокси.

Для быстрой проверки без изменения конфигурации напишите тестовую внешнюю обработку. В ней создайте WSПрокси динамически и вызовите операцию, обернув вызов в попытку-исключение, чтобы увидеть текст ошибки.

bsl
Попытка
    Определения = Новый WSОпределения("http://server/base/ws/ServiceName?wsdl", "Логин", "Пароль");
    Прокси = Новый WSПрокси(Определения, "http://example.org/", "ServiceName", "ServiceNameSoap");
    Результат = Прокси.MyOperation("Тест");
    Сообщить("Ответ: " + Результат);
Исключение
    Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;

Обратите внимание на второй параметр конструктора WSПрокси — URI пространства имён. Он должен точно совпадать с тем, что указан в свойствах веб-сервиса в конфигураторе. Несовпадение пространства имён — частая причина ошибки «Операция не найдена» при внешне правильном коде.

Диагностика типичных ошибок

Большинство проблем при проверке веб-сервиса сводится к ограниченному набору причин. Полезно идти по списку сверху вниз, исключая уровни по очереди: сеть, веб-сервер, публикация, аутентификация, права, код операции.

СимптомВероятная причинаЧто делать
404 Not FoundНет публикации или неверный путьОпубликовать базу заново, сверить имя каталога и сервиса
401 / повторный запрос пароляНеверный логин, пароль или настройка аутентификации IIS/ApacheПроверить пользователя, включить нужный тип аутентификации
500 Internal Server ErrorСбой расширения веб-сервера, база недоступнаПроверить службу сервера 1С, логи веб-сервера
SOAP Fault «Операция не найдена»Неверное имя операции или пространство имёнСверить с WSDL и свойствами сервиса
SOAP Fault с текстом прикладной ошибкиИсключение в коде операцииОтладить код, проверить журнал регистрации
Таймаут без ответаФайрвол, долгий запрос в кодеПроверить сетевой доступ, замерить время выполнения

Не забывайте про журнал регистрации: при вызове веб-сервиса 1С фиксирует там ошибки выполнения кода. Откройте журнал в конфигураторе с отбором по пользователю, под которым шёл вызов, — часто текст исключения там подробнее, чем в SOAP Fault.

Типичные ошибки
01
Проверять сервис только с самого сервера — внешние клиенты могут не иметь доступа из-за сетевых настроек
02
Забыть перепубликовать базу после изменения состава операций — WSDL остаётся старым
03
Тестировать под администратором и не проверить права рабочего пользователя
04
Путать http и https — при принудительном редиректе SOAP-клиенты часто ломаются
05
Игнорировать журнал регистрации и искать причину только в тексте SOAP Fault

Отладка кода операции в конфигураторе

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

Поставьте точку останова в коде операции и выполните вызов из SoapUI. Отладчик остановится внутри операции, и вы увидите значения входных параметров, ход выполнения запросов и место исключения. Учтите: отладка веб-сервисов работает только при включённой отладке на сервере 1С, а на файловой базе — при запуске через веб-сервер с отладкой.

Проверка производительности и стабильности

После того как операция заработала, проверьте её под нагрузкой, хотя бы приблизительно. Замерьте время ответа на типовых данных: если операция выполняется дольше нескольких секунд, внешние системы могут получать таймауты. Типичные причины медленной работы — запросы без индексов, обход больших таблиц, обмен большими пакетами XDTO.

Для сервисов, которые вызываются часто, полезно сделать простое регламентное наблюдение: периодический тестовый вызов с фиксацией времени ответа и результата. Это позволит заметить деградацию до жалоб пользователей. Также проверьте поведение при параллельных вызовах — ошибки блокировок в коде операции проявляются именно под конкурентной нагрузкой.

Маршрут решения

Как выбрать действие

WSDL открывается, но операция возвращает FaultСмотрите журнал регистрации и отлаживайте код операции
WSDL не открывается даже с сервераПроверяйте публикацию и работу веб-сервера
С сервера работает, извне — нетПроверяйте файрвол, DNS и сетевые маршруты
Всё работает, но медленноАнализируйте запросы в коде операции и объём передаваемых данных

Часто задаваемые вопросы

Можно ли проверить веб-сервис 1С без SoapUI?

Да. Минимальная проверка — открытие адреса с ?wsdl в браузере. Для вызова операции подойдут Postman, curl с XML-телом запроса или тестовая обработка в 1С с WSПрокси. SoapUI просто удобнее, потому что сам строит шаблоны запросов из WSDL.

Почему браузер бесконечно запрашивает логин и пароль?

Чаще всего неверно настроена аутентификация на веб-сервере: например, в IIS включена только анонимная аутентификация или отключена Basic. Также проверьте, что пользователь существует в базе, активен и его пароль не содержит символов, которые клиент передаёт в неправильной кодировке.

Изменил операции в конфигураторе, а WSDL остался старым. Что делать?

Обновите публикацию: Администрирование → Публикация на веб-сервере → Опубликовать. Если не помогло, перезапустите веб-сервер (для IIS — iisreset) и очистите кэш публикаций, удалив содержимое каталога публикации перед повторной публикацией.

Как проверить веб-сервис, опубликованный по https?

Принцип тот же, но убедитесь, что сертификат валиден и доверен на машине, с которой идёт проверка. В SoapUI и 1С при самоподписанном сертификате могут быть ошибки проверки SSL — для WSОпределения потребуется объект защищённого соединения с отключённой проверкой сертификата на тестовом контуре.

Операция возвращает пустой результат без ошибки. Это нормально?

Не всегда. Проверьте, что входные параметры реально доходят до кода — поставьте запись в журнал регистрации или точку останова в начале операции. Пустой ответ часто означает, что запрос в коде не нашёл данных по переданным условиям, а не что сервис сломан.

Итог

Что важно запомнить

Проверка веб-сервиса 1С идёт по уровням: сначала доступность WSDL в браузере, затем вызов операции через SoapUI или WSПрокси, потом отладка кода и прав. Большинство проблем связано с публикацией, аутентификацией и правами, а не с логикой кода — начинайте диагностику с простых уровней.