Как вызвать метод веб-сервиса 1С через строку браузера?

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

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

Почему нельзя вызвать SOAP веб-сервис напрямую из строки браузера

Проанализируем техническую сторону работы веб-сервисов в платформе 1С:

  1. Специфика протокола SOAP: Объект метаданных Web-сервисы в платформе 1С реализует стандарты SOAP 1.1 и SOAP 1.2. Вызов любой операции веб-сервиса требует отправки HTTP-запроса методом POST со строго структурированным XML-телом (конвертом SOAP Envelope) и специальными заголовками (например, Content-Type: text/xml или SOAPAction).
  2. Ограничения адресной строки браузера: При вводе URL в адресную строку браузер всегда формирует запрос методом GET без тела запроса. Поэтому при переходе по ссылке вида http://сервер/база/ws/ws1.1cws?wsdl браузер может только отобразить WSDL-описание сервиса, но выполнить сам метод с передачей параметров невозможно.

Способ 1. Тестирование с помощью программы SoapUI

Самым распространенным и удобным инструментом для отладки SOAP-сервисов является утилита SoapUI. Рассмотрим порядок работы с ней:

  1. Запустим SoapUI и создадим новый SOAP-проект (меню File -> New SOAP Project).
  2. В поле Initial WSDL укажем адрес опубликованного описания сервиса, например: http://localhost/base/ws/MyWebService.1cws?wsdl.
  3. Программа автоматически прочитает WSDL, определит доступные операции и сформирует шаблоны XML-запросов.
  4. Откроем нужную операцию, подставим тестовые значения параметров внутрь тегов XML и нажмем кнопку отправки запроса.
  5. В соседнем окне проанализируем ответ сервиса и убедимся, что запись данных в 1С прошла успешно.

Способ 2. Вызов метода через PowerShell

Если требуется выполнить вызов из командной строки Windows без установки сторонних графических утилит, воспользуемся командлетом New-WebServiceProxy в PowerShell. Разберем пример сценария:


$wsdlUrl = "http://localhost/base/ws/MyWebService.1cws?wsdl"
$proxy = New-WebServiceProxy -Uri $wsdlUrl -UseDefaultCredential
$result = $proxy.MyMethod("ТестоваяСтрока")
Write-Host $result

PowerShell динамически создаст прокси-объект на основе WSDL-схемы и выполнит вызов метода через стандартные механизмы .NET Framework.

Способ 3. Вызов веб-сервиса средствами встроенного языка 1С

Для проверки сервиса внутри самой платформы создадим внешнюю обработку и выполним программный вызов через объекты WSОпределения и WSПрокси. Посмотрим на типовой пример кода:


Определения = Новый WSОпределения("http://localhost/base/ws/MyWebService.1cws?wsdl", "ИмяПользователя", "Пароль");
URIПространстваИмен = "http://www.mycompany.ru/ws";
Сервис = Определения.Сервисы[0];
ТочкаПодключения = Сервис.ТочкиПодключения[0];

Прокси = Новый WSПрокси(Определения, URIПространстваИмен, Сервис.Имя, ТочкаПодключения.Имя);
Прокси.Пользователь = "ИмяПользователя";
Прокси.Пароль = "Пароль";

Результат = Прокси.MyMethod("Тестовое значение");

Способ 4. Использование HTTP-сервисов для вызова через URL

Если по условиям задачи вызов обязательно должен происходить именно из адресной строки браузера через обычный перейдет по URL с GET-параметрами, вместо объекта Web-сервисы следует использовать объект метаданных HTTP-сервисы:

  1. Создадим в конфигураторе объект HTTP-сервис и зададим шаблон URL (например, /create/{Param}).
  2. Добавим метод GET и привяжем к нему процедуру-обработчик.
  3. В коде обработчика считаем входящие параметры из объекта HTTPСервисЗапрос, выполним создание элемента справочника и вернем результат через HTTPСервисОтвет.

В этом случае запрос вида http://сервер/база/hs/myservice/create/НовыйЭлемент можно будет вызывать напрямую через любой интернет-браузер.

← На главную