Имя: Пароль:
1C
1С v8
Работа с веб сервисами через WSПрокси
0 AlexandrM_DP
 
20.08.13
17:49
Пытаюсь разобраться как работать через штатный механизм с веб сервисами.
Определенные моменты понятно и работают но есть 2 текущих вопроса.

1. Исключение которые выдает 1С крайне скудные и не содержат самой ошибки, если проследить за трафиком веб сервис ее отдает в поле detail.
Вопрос как ее из 1С прочитать?

2. Есть тип но непонятно как ним работать
типсПараметра2 = Прокси.ФабрикаXDTO.Пакеты.Получить("http://schemas.microsoft.com/sharepoint/soap/").Получить("GetListItems_queryOptions";);
Параметр2 = Прокси.ФабрикаXDTO.Создать(типсПараметра2);
Параметр2 создается но у него нет полей. Судя по пример на других языках этот параметр заполняют текстом в формате xml таким "<QueryOptions><Folder>Значение</Folder></QueryOptions>"
Как такое провернуть в 1С?
1 Serginio1
 
20.08.13
18:07
А какой у этого параметра тип огласи
2 AlexandrM_DP
 
20.08.13
18:12
(1) Не могу ответить точно
Это параметр другого типа http://clip2net.com/s/5BbGVE
Сам тип объявлен так http://clip2net.com/s/5BbI5D
3 Serginio1
 
20.08.13
18:24
я так понимаю что базовый тип AnyType

Объект = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "anyType"));
    Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema";, "Folder",ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "string"), "Значение"));
4 Serginio1
 
20.08.13
18:27
Что то какие то лишние запятые
Объект = Фабрика.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "anyType"));
Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema";, "Folder",Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema";, "string"), "Значение"));
5 Serginio1
 
20.08.13
18:28
Вернее точки с запятой
6 AlexandrM_DP
 
20.08.13
18:38
(3)(4)(5)
Спасибо огромное, хоть понял как добавлять значения
Такой код создает фильтр нужного типа
ТипПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://schemas.microsoft.com/sharepoint/soap/").Получить("GetListItems_queryOptions";);
Фильтр = Прокси.ФабрикаXDTO.Создать(ТипПараметра);
Значение = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "string"), "Папка1");
Фильтр.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema";, "Folder", Значение);

Но тут все равно ошибка (в фиддлере вижу)
Элемент &lt;QueryOptions&gt; параметра queryOptions отсутствует или недопустим.

Уверен что нужно точно узнать какая структура нужна для типа GetListItems_queryOptions

Не подскажите
1. Каким способом можно получить детали структуры типа если сам сервис ее не отдает?
2. Есть ли какие онлайн тестеры wsdl сервисов (с поддержкой авторизации), чтобы запросы быстро создавать и смотреть что уходит что приходит?
7 Fragster
 
модератор
20.08.13
18:40
(0).1 хз, что там у вас, но исключения, которые генерит вебсервис 1с - в полном виде доходят до 1ски, которая обращается через вспрокси к нему
8 AlexandrM_DP
 
20.08.13
18:42
(7)
вот полная ошибка
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</faultstring><detail><errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">;Элемент &lt;QueryOptions&gt; параметра queryOptions отсутствует или недопустим.</errorstring><errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x82000000</errorcode></detail></soap:Fault></soap:Body></soap:Envelope>;
До 1С доходит только
Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.
в ОписаниеОшибки()
Или есть другой способ получения деталей ошибки?
9 Fragster
 
модератор
20.08.13
18:45
(8) ну, ОписаниеОшибки и ИнформацияОбОшибке() немного разные вещи, во втором случае может быть немного больше (там есть вложенность исключений). Хотя как с шарепоинтом - не знаю.
10 AlexandrM_DP
 
20.08.13
19:04
(9) В тот то и дело что теряются данные
http://clip2net.com/s/5BcU9O

А в деталях ошибки
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</faultstring><detail><errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">;Элемент &lt;QueryOptions&gt; параметра queryOptions отсутствует или недопустим.</errorstring><errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x82000000</errorcode></detail></soap:Fault></soap:Body></soap:Envelope>;

есть такое "Элемент "QueryOptions" параметра queryOptions отсутствует или недопустим."
11 Serginio1
 
20.08.13
19:05
Ты смешиваешь фабрики. Ничего криминального может и не быть

Фабрика= Прокси.ФабрикаXDTO;
ТипПараметра=ФабрикаXDTO.Тип("http://schemas.microsoft.com/sharepoint/soap/","GetListItems_queryOptions";);
Фильтр = Фабрика.Создать(ТипПараметра);
Значение = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema";, "string"), "Папка1");
Фильтр.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema";, "Folder", Значение);
12 AlexandrM_DP
 
20.08.13
19:37
(11) Спасибо за помощь, но пока все равно не понял некоторых принципов

Должно отправить в таком виде
<QueryOptions>
   <Folder>Папка1</Folder>
</QueryOptions>

Уходит в таком
<queryOptions>
   <xs:Folder>Папка1</xs:Folder>
</queryOptions>
13 AlexandrM_DP
 
21.08.13
09:15
Манипуляции в fiddler дали точную причину ошибки.
Но почему именно так
Запрос 1С http://clip2net.com/s/5BnIFG
Работающий запрос http://clip2net.com/s/5BnJYF
14 Serginio1
 
21.08.13
10:07
Покажи Wsdl
Можешь извратиться Или смотри v8: Сторонний Веб сервис, XDTO  см 79
15 Serginio1
 
21.08.13
10:10
Можешь сохранить WsdL и отредактировать его