Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Возврат из web-сервиса не примитивного значения

Возврат из web-сервиса не примитивного значения
Я
   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.

Подскажите, что я делаю не так, куда копать?
 
 
   Strong_Gale
 
1 - 26.10.17 - 16:13
Пока проблема решилась отключение кэша в php

ini_set('soap.wsdl_cache_enabled', 0 );
ini_set('soap.wsdl_cache_ttl', 0);
   Strong_Gale
 
2 - 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.Создать(ДокументЗаказТип);

Изменяю имя поля (добавляю и убираю пробела), применяю изменения - все появляется.

В чем проблема может быть?
   DrShad
 
3 - 26.10.17 - 17:31
забудь про XDTO
   Nolan
 
4 - 26.10.17 - 17:40
(3) альтернатива какая?
   DrShad
 
5 - 26.10.17 - 17:57
(4) да хоть JSON
   lodger
 
6 - 26.10.17 - 17:59
(5) в 8.1 тоже?
   Филиал-msk
 
7 - 26.10.17 - 18:28
(6) Да хоть в 7.7
   Филиал-msk
 
8 - 26.10.17 - 18:31
(0) У тебя проблема не на стороне 1С, а на стороне твоего просмотрщика. Бери сначала какой-нибудь некэширующий SOAPUI, ограничивай в публикации время жизни сессии в пуле коннектов 1С 1 секундой, чтобы гарантировано все рвалось и обтестируйся.
А потом уже пыха своего крути
   Strong_Gale
 
9 - 26.10.17 - 22:51
(6) с сессией и кэшэм wsdl я разобрался, понятно, мне не понятна ситуация в (2). Т.е. в конфигурации описан тип XDTO, по нему создается объект и в объекте нет свойства, описаного в типе XDTO
   Strong_Gale
 
10 - 26.10.17 - 22:52
(8) с сессией и кэшэм wsdl я разобрался, понятно, мне не понятна ситуация в (2). Т.е. в конфигурации описан тип XDTO, по нему создается объект и в объекте нет свойства, описаного в типе XDTO
 
 Рекламное место пустует
   Филиал-msk
 
11 - 26.10.17 - 23:02
Судя по дублям сообщений у тебя что-то с клавиатурой.
   DrShad
 
12 - 27.10.17 - 08:00
(6) да легко
   rphosts
 
13 - 27.10.17 - 08:09
(11)эьто не дубль, чел не умеет писать кратко, например так (9) к (8)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует