Имя: Пароль:
1C
1С v8
Операция web-сервиса не возвращает значение типа structure
0 Я сказал
 
12.11.13
12:20
Здравствуйте. Ситуация такая. Есть web-сервис, в нем операция с типом возвращаемого значения structure (пространство имен http://v8.1c.ru/8.1/data/core). В функции, соответствующей этой операции, формируется и возвращается структура из двух значений строкового типа. Но клиент, вызвавший операцию web-сервиса получает Неопределено. С операциями того же web-сервиса, возвращающими значения типа string (пространство имен http://www.w3.org/2001/XMLSchema) и типа ValueStorage (пространство имен http://v8.1c.ru/8.1/data/core) проблем не возникает. Почему мир так несправедлив?
1 Я сказал
 
12.11.13
13:05
Вверх!
2 Я сказал
 
12.11.13
14:20
Еще раз.
3 Эмбеддер
 
12.11.13
14:21
возвращает, это 1С не понимает такой формат
4 Serginio1
 
12.11.13
14:26
Код покажи
5 Я сказал
 
12.11.13
14:30
Почему тогда ValueStorage понимает? Они ведь из одного и того же типового пакета XDTO...(3)
6 Эмбеддер
 
12.11.13
14:31
(5) я не стал разбираться, почему 1С не хочет работать с веб-сервисом (она работает не с каждым), а работал через http запросы
7 Serginio1
 
12.11.13
14:31
StructureХДТО = СериализаторXDTO.ЗаписатьXDTO(структура);
8 Serginio1
 
12.11.13
14:37
А точно возвращает Structure?
Может в структуре есть то что не сериализуется или не из импортрованного пакета?
9 hhhh
 
12.11.13
14:42
"возвращается структура из двух значений строкового типа"
10 Я сказал
 
12.11.13
14:44
[CODE]
// На стороне клиента
...
Прокси = ПолучитьПрокси(Константы.Пароль.Получить());
СтруктураКонстант = Прокси.НачатьОбмен();

// На стороне сервера
Функция НачатьОбмен()
...
СтруктураКонстант = Новый Структура;
СтруктураКонстант.Вставить("Пользователь", Строка(УзелОбмена.Пользователь));
СтруктураКонстант.Вставить("КаталогУслуг", Строка(КаталогУслуг));
    
Возврат СтруктураКонстант;

КонецФункции
[/CODE]

ПолучитьПрокси - это подключение к web-сервису; после перехода отладчика на клиент переменная СтруктураКонстант содержит значение Неопределено.
11 Serginio1
 
12.11.13
14:50
(10) А теперь попробуй
возврат СериализаторXDTO.ЗаписатьXDTO(СтруктураКонстант);
12 Я сказал
 
12.11.13
14:57
(11) Спасибо! Это то, что нужно!
AdBlock убивает бесплатный контент. 1Сергей