Создавая операцию
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.
СпасибО!
ОтветитьУдалить