Как я победил свойство Возможно пустое значение у параметра операции Веб-сервиса

Создавая операцию consGetQuestions у веб-сервиса OnlineConsultant, мне потребовалось, что бы у этой операции параметры могли принимать пустое значение. Такое условие позволяет накладывать различные отборы в запросе в зависимости от значений параметров. То есть, если значение параметра пустое, то отбор не делаем, если не пустое, то накладываем отбор.

Операция параметра в конфигураторе выглядит следующим образом:
Операция веб-сервиса
У неё три параметра ConsultantCode, FromDate и ShowClosed, которые могу принимать пустое значение (свойство Возможно пусто значение = Истина). Например:
Свойство - Возможно пустое значение


Публикуем веб-сервис и делаем тестовый запрос с помощью очень хорошего инструмента под названием SoapUI.

1) Запрос с заполненными параметрами:
Запрос с непустыми параметрами
2) Запрос с пустым параметром ShowClosed:
Запрос с пустым параметром
Во втором запросе мы видим ошибку, которую сгенерировал веб-сервис. Ошибка говорит, что пустая строка не является типом Булево (Значение: '' не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}boolean). То есть отсутствие значения между тэгами веб-сервис воспринимает как строку, которая пустая. Что бы этого избежать, нужно добавить атрибут в тег параметра и указать пространство имен этого атрибута.
Выполним третий запрос!

3) Запрос с правильным указанием пустого параметра:
Запрос с правильным указанием пустого параметра
У тега ShowClosed указали атрибут nil со значением true, который относится к пространству имен http://www.w3.org/2001/XMLSchema-instance:
<sup:ShowClosed xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Платформа 1С пустой параметр представляет значением Неопределено:
Значение пустого параметра
Что бы не задавать для каждого параметра пространство имен, его можно определить в теге Body, запрос будет выглядеть следующим образом:
Запрос с несколькими пустыми параметрами
Ссылка на бесплатный SoapUI.

Комментарии

Отправить комментарий