Параметры метода веб-сервиса


#1

Помогите разобраться в том, почему 1С ведет себя странно с одним описанием веб-сервиса.
Имеем описание стороннего веб-сервиса (вшит в макет обработки во вложении).
Из описания видно, что метод QueryCH имеет один параметр типа QueryCH (да, имя метода и типа параметра совпадают). Также видно, что метод имеет выходной параметр типа QueryCHResponse
Вот что видно в SoapUI:

А вот что показывает 1С:

Т.е. мало того, что она принимает этот метод как Процедуру, а не как Функцию, так еще и количество параметров увеличилось (как я понял, развернулись все свойства входного и выходного параметра и запихались во входные параметр самого метода, но это моя догадка)

В чем может быть проблема? Никто не сталкивался?


#2

Не нашел как прикладывать файлик в форуме. Поэтому вот обработка с несколькими строчками кода и самим макетом-описанием веб-сервиса


#3

SOAP-UI показывает странный xmlns в возвращаемом параметры, вообще судя по скриншоту - авторы API его на коленке писали. Есть предположение что тебе нужно импортировать их схему напрямюу в XDTO пакет.

НА скриншоте не видно какие NS в WSDL указаны.


#4

Да, к API веб-сервиса и самому веб-сервису есть много вопросов, но я на них никак повлиять не могу.
Спасибо, благодаря тебе увидел, что “местоположение” подменяется некорректно:

А всё это тянется с того самого stunnel. Может это такая особенность работы с ним?

Млин, как не хочется самому рисовать схему XDTO в 1С. Не благодарное это дело. Но видимо другого пути нет


#5

Я что-то не представляю как заставить 1С выполнить метод этого веб-сервиса, если он в пространстве имен для CHBInput возвращает такое местоположение

Даже если я руками подправлю секцию вот так:

<wsdl:service name="CHBInput">
<wsdl:port name="CHBInputSoap" binding="tns:CHBInputSoap">
  <soap:address location="http://127.0.0.1:8383/InputService/CHBInput.asmx" />
</wsdl:port>

И создаю WSОпределения на основании локального файла, то ничего не меняется


#6

Ответ 1С на мой запрос по этой проблеме:

Платформа пытается определить Wrapped стиль процедур веб-сервиса и делает это согласно фиксированного набора правил:

  1. Вход должен содержать ровно одну часть сообщения (как в описании так и в привязке)

  2. Выход должен содержать ровно одну часть сообщения (как в описании так и в привязке)

  3. Части сообщения входа и выхода должны ссылаться в качестве типа на элемент схемы, типом которого является complextype c sequence объединением элементов

  4. Элемент схемы, на который ссылается часть сообщения, не должен быть nillable

Если указанные условия не выполняются, то необходимо выполнять вызов метода согласно контракта веб сервиса: указывать объекты подходящего типа в качестве входных и выходных параметров.

В будущем данная особенность будет отражена в документации.

И в данном случае надо вызывать метод не как видится мне и SoupUI - функцию с одним параметром, а так, как её себе представляет 1С - процедура с шестью параметрами:

Прокси.QueryCH(DatabaseMarker, XmlRequesl, RequestPermission, QueryCHResult, XmlQueryResult, TextQWueryResult)

Странно конечно, но лучше так, чем никак.