|
проверить есть ли элемент в ответе XDTO (soap)
| ☑ |
0
бегинер
27.07.16
✎
13:29
|
есть сервис по soap дает ответ - иерархический, по самому нижнему уровню в цикле обхожу весь массив параметров-элементов, в ответе грубо 10 столбцов(параметров), но бывает что одного из параметров нет в ответе, как проверить есть ли элемент с определенным именем в ответе?
можно через попытка и по ошибке, но наверно есть более правильный способ.
Определения = новый WSОпределения(";);
прокси=wsссылки.WSСсылка1.СоздатьWSПрокси(";);
ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить(";);
//Создаем параметр на основе типа и заполняем значение параметра On_Date.
WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.UserID = "11";
WSПараметр.GroupID = "12";
ответ = Прокси.Get4Group(WSПараметр);
Для Каждого Элемент Из ответ.Get4GroupResult.diffgram.Setx.ResponseTable Цикл
сообщить(элемент.Number);
сообщить(элемент.Param1);
сообщить(элемент.Param2);
конеццикла;
вот бывает что param2 нет в ответе, нужно проверить его на наличие в ответе
|
|
1
бегинер
27.07.16
✎
13:39
|
обойти ошибку "Поле объекта не обнаружено (Param2)"
|
|
2
Avalone2010
27.07.16
✎
13:51
|
(0)элемент.Свойства.Получить(Param2) = неопределено
Так не пойдет?
|
|
3
Serginio1
27.07.16
✎
13:51
|
|
|
4
Avalone2010
27.07.16
✎
13:52
|
к(2), опечатка, должно быть *.свойства().*
|
|
5
Serginio1
27.07.16
✎
13:52
|
Свойство=ОбъектXDTO.Свойства().получить(ИмяТвоегоСвойства);
Если ОбъектXDTO.Установлено(Свойство) Тогда
|
|
6
mTema32
27.07.16
✎
13:54
|
(5)+1
Или получай в цикле всю коллекцию элементов и записывай в структуру например. А потом уже обрабатывай наличие/отсутствие параметров.
|
|
7
Fragster
гуру
27.07.16
✎
13:57
|
если доступны разработчики, то попинать их на тему правильного wsdl и тогда в случае отсутствия там будет неопределено.
А вообще в СП у ОбъектXDTO все написано, например про .Свойства
|
|
8
бегинер
27.07.16
✎
14:19
|
(5) спасибо!
|
|