|
|
|
Возврат из web-сервиса не примитивного значения | ☑ | ||
|---|---|---|---|---|
|
0
Strong_Gale
26.10.17
✎
15:59
|
Доброго времени суток.
Описан XDTO пакет, в нем описан тип объекта <xs:complexType name="FindOrder"> <xs:sequence> <xs:element name="IsFind" type="xs:boolean"/> <xs:element name="Year" type="xs:string"/> <xs:element name="Number" type="xs:string"/> <xs:element name="Total" type="xs:int"/> <xs:element name="UUID" type="xs:string"/> </xs:sequence> </xs:complexType> Есть web-сервис и функция, у которой стоит этот тип в качестве возвращаемого значения. В функции есть инициализация и возвращение значения. ДокументЗаказТип = ФабрикаXDTO.Тип("myURI", "FindOrder"); ДокументЗаказ = ФабрикаXDTO.Создать(ДокументЗаказТип); ... ДокументЗаказ.IsFind = 1; ДокументЗаказ.Year = СокрЛП(Year); ДокументЗаказ.Number = СокрЛП(OrderNum); ДокументЗаказ.Total = ВыборкаДокумента.СуммаДокумента; ДокументЗаказ.UUID = Строка(ВыборкаДокумента.Ссылка.УникальныйИдентификатор()); Возврат ДокументЗаказ; При вызове этой функции из скрипта php получаю: Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: Violation of encoding rules in Ошибка появляется в момент после того как функция отработает, в отладке до возврата все хорошо. Подозреваю, что проблема в национальных кодировках, но их нет в возвращаемом значении, была мысль на запятую в разделители double, ушел на int. Подскажите, что я делаю не так, куда копать? |
|||
|
1
Strong_Gale
26.10.17
✎
16:13
|
Пока проблема решилась отключение кэша в php
ini_set('soap.wsdl_cache_enabled', 0 ); ini_set('soap.wsdl_cache_ttl', 0); |
|||
|
2
Strong_Gale
26.10.17
✎
17:13
|
Возникло еще одна проблема - интересное поведение.
Изменил пакет XDTO <xs:complexType name="FindOrder"> <xs:sequence> <xs:element name="IsFind" type="xs:boolean"/> <xs:element name="HavePay" type="xs:boolean"/> <xs:element name="Year" type="xs:string"/> <xs:element name="Number" type="xs:string"/> <xs:element name="Total" type="xs:double"/> <xs:element name="UUID" type="xs:string"/> </xs:sequence> </xs:complexType> Добавил поле, заполняю его в функции, все прекрасно работает. Пишу еще одну функцию в этом web-сервисе. Предыдущую не трогаю, пакет тоже. После применения изменений добавленное поле из wsdl пропадает и функция (предыдущая) валиться с ошибкой. Поле присутствует в пакете XDTO, но в объекте ДокументЗаказ отсутствует ДокументЗаказТип = ФабрикаXDTO.Тип("myURI", "FindOrder"); ДокументЗаказ = ФабрикаXDTO.Создать(ДокументЗаказТип); Изменяю имя поля (добавляю и убираю пробела), применяю изменения - все появляется. В чем проблема может быть? |
|||
|
3
DrShad
26.10.17
✎
17:31
|
забудь про XDTO
|
|||
|
4
Nolan
26.10.17
✎
17:40
|
(3) альтернатива какая?
|
|||
|
5
DrShad
26.10.17
✎
17:57
|
(4) да хоть JSON
|
|||
|
6
lodger
26.10.17
✎
17:59
|
(5) в 8.1 тоже?
|
|||
|
7
Филиал-msk
26.10.17
✎
18:28
|
(6) Да хоть в 7.7
|
|||
|
8
Филиал-msk
26.10.17
✎
18:31
|
(0) У тебя проблема не на стороне 1С, а на стороне твоего просмотрщика. Бери сначала какой-нибудь некэширующий SOAPUI, ограничивай в публикации время жизни сессии в пуле коннектов 1С 1 секундой, чтобы гарантировано все рвалось и обтестируйся.
А потом уже пыха своего крути |
|||
|
9
Strong_Gale
26.10.17
✎
22:51
|
(6) с сессией и кэшэм wsdl я разобрался, понятно, мне не понятна ситуация в (2). Т.е. в конфигурации описан тип XDTO, по нему создается объект и в объекте нет свойства, описаного в типе XDTO
|
|||
|
10
Strong_Gale
26.10.17
✎
22:52
|
(8) с сессией и кэшэм wsdl я разобрался, понятно, мне не понятна ситуация в (2). Т.е. в конфигурации описан тип XDTO, по нему создается объект и в объекте нет свойства, описаного в типе XDTO
|
|||
|
11
Филиал-msk
26.10.17
✎
23:02
|
Судя по дублям сообщений у тебя что-то с клавиатурой.
|
|||
|
12
DrShad
27.10.17
✎
08:00
|
(6) да легко
|
|||
|
13
rphosts
27.10.17
✎
08:09
|
(11)эьто не дубль, чел не умеет писать кратко, например так (9) к (8)
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |