|
1С веб-сервис с пустым множественным параметром | ☑ | ||
---|---|---|---|---|
0
mzelensky
13.05.19
✎
12:44
|
Доброго всем!
Настраиваю XDTO схему для веб-сервиса. Имеется параметр "ChildrenList" тип данных равен "ChildrenLine" и описан в этой же схеме XDTO. Настройки для параметра "ChildrenList" следующие: Мин. значение = 0 Макс значение = -1 Возможно пустое значение = Истина Т.е. в этот параметр передается список данных. При этом список может быть заполненным, а может быть ПУСТЫМ + параметр "ChildrenList" может вообще ОТСУТСТВОВАТЬ. Проблема в том, что я НЕ могу допиться того, чтобы параметр "ChildrenList" стал "Неопределено". Если указываю в обращении к веб-сервису параметр "ChildrenList", то система требует его заполнить и тогда я имею заполненный список (либо пустой). А если я вообще НЕ указываю параметр "ChildrenList", то в веб-сервис все-равно приходит "ChildrenList" с типом "СписокXDTO" |
|||
1
mzelensky
13.05.19
✎
12:45
|
(0) + Для единичного поля со свойствами:
Мин. значение = 0 Макс значение = 1 Возможно пустое значение = Истина все отрабатывает НОРМАЛЬНО А вот проблема именно со множественным типом |
|||
2
mzelensky
13.05.19
✎
12:47
|
||||
3
mzelensky
13.05.19
✎
12:47
|
||||
4
mzelensky
13.05.19
✎
12:52
|
Наковырял вот нечто похожее в инете:
http://1centerprise8.blogspot.com/2015/02/nilwebservice.html Но там тип примитивный, а у меня собственный. Да и хотелось бы обойтись без правок xml-ки |
|||
5
mzelensky
13.05.19
✎
13:49
|
ап
|
|||
6
Fragster
гуру
13.05.19
✎
13:55
|
ОбъектXDTO.Свойство = Неопределено и ОбъектXDTO.Установить("Свойство", Неопределено), я так понимаю, не пробовал?
|
|||
7
mzelensky
13.05.19
✎
14:28
|
(6) Если ты говоришь за сторону, которая отправляет данные, то нет не пробовал, т.к. это делает САЙТ, а не платформа 1С. А следовательно типа "Неопределено" там нет.
Но если попробовать передать "Null" то будет ошибка. Равно как и если сделать так "<upd:ChildrenList></upd:ChildrenList>" |
|||
8
Fragster
гуру
13.05.19
✎
14:50
|
(7) если это делает сайт, то его и нужно править. Что-то типа: <upd:ChildrenList xsi:nil="true"/>. а на принимающей стороне все правильно у тебя работает.
|
|||
9
Fragster
гуру
13.05.19
✎
14:53
|
ни или какое там у тебя пространство имен для http://www.w3.org/2001/XMLSchema-instance
|
|||
10
Fragster
гуру
13.05.19
✎
14:53
|
ну
|
|||
11
mzelensky
13.05.19
✎
14:56
|
(9) НА сайте они вот так обращаются:
( [DiscountCard] => Array ( [Id] => 8899900000808 [ShopId] => BK ) [ChildrenList] => Array ( [0] => Array ( [Name] => Mike [DateOfBirth] => 2014-10-18 [Sex] => BOY ) ) ) Как в этом случае сделать: Что-то типа: <upd:ChildrenList xsi:nil="true"/> ? |
|||
12
Fragster
гуру
13.05.19
✎
15:00
|
вместо массива пихнуть NULL
|
|||
13
mzelensky
13.05.19
✎
15:04
|
Сейчас через SoupUI попробовал вот так:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:exc="ExchangeDataWithSite" xmlns:upd="UpdateDiscountCard"> <soapenv:Header/> <soapenv:Body> <exc:UpdateDiscountCard> <exc:DiscountCard> <upd:Id>8888000017870</upd:Id> <upd:ShopId>BK</upd:ShopId> <!--Zero or more repetitions:--> <upd:ChildrenList xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></upd:ChildrenList> </exc:DiscountCard> </exc:UpdateDiscountCard> </soapenv:Body> </soapenv:Envelope> т.е. добавил: <upd:ChildrenList xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></upd:ChildrenList> Запрос отработал, ошибки нет, НО все-равно не так, как нужно. В итоге на сторону 1С пришел параметр "ChildrenList" типом данных "СписокXDTO" с 1 строкой данных (с одним элементом), значение в элементе было "НеопределенО" |
|||
14
Fragster
гуру
13.05.19
✎
15:05
|
ну примерно так и должно быть :)
|
|||
15
Fragster
гуру
13.05.19
✎
15:06
|
а чем пустой список не устраивает?
|
|||
16
mzelensky
13.05.19
✎
15:08
|
(15) По логике задачи не устраивает.
Мне нужно отработать 3 состояния: 1) Списка нет вообще, т.е. = "Неопределено" - значи параметр вообще не передавали. Ничего не делаем. 2) Список есть ,но он ПУСТОЙ - значит нужно очистить имеющиеся данные 3) Список есть и в нем есть значения - обработать эти значения А в результате я не могу отделить событие "1" от события "2". Т.к. не могу добиться, чтобы параметр "ChildrenList" принимал значение "Неопределено"...как это работает с аналогичным одиничным параметром |
|||
17
mzelensky
13.05.19
✎
15:11
|
Пока в голову приходит только ввести еще один единичный параметр, что-то вроде "ОбработатьChildrenList". И передавать туда "Истина"\"ложь".
Если событие "1", то будет "ложь" Если события "2" или "3", то будет "истина" |
|||
18
Fragster
гуру
13.05.19
✎
15:15
|
делай
<list> <- минимальное количество = 0 максимальное = 1. ну или 1 и 1, но возможно пустое. <element/> <- минимальное количество = 0 максимальное = -1 </list> тогда если нет list (для варианта с возможно пустое - если там непоределено) - это список вообще не отправлен, а далее список из свойств element |
|||
19
mzelensky
13.05.19
✎
15:25
|
(18) Ну или так. Сут ьв целом понятно.
Но все-равно какое-то извращение получается. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |