Имя: Пароль:
1C
1С v8
anyType в XDTO
,
0 vicof
 
15.05.15
17:02
Есть сторонний веб-сервис. Принимает параметр типа anyType.
Как ему передать туда строку?

ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.w3.org/2001/XMLSchema").Получить("anyType";);
    Параметр        = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);

Теперь параметр - это объектXDTO. А как запихнуть в него строку не понимаю.
1 vicof
 
15.05.15
17:12
Почитал на ИТС, что anyType подразумевает последовательность.

Последовательность = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "anyType")).Последовательность();
    Последовательность.Добавить("пыщ");
Ругается, что не хватает второго параметра, хотя конструктор на один текстовый параметр существует.
2 Serginio1
 
15.05.15
18:00
Смотря что тебе нужно. Под AnyType может быть любой объект

v8: Тип AnyType в Веб-сервисах и массив
3 Serginio1
 
15.05.15
18:01
Передавай просто строку
4 vicof
 
18.05.15
11:23
ТипДата = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "anyType"));
ТипДата.Добавить(ФормаXML.Текст, "http://www.w3.org/2001/XMLSchema";, "elem",ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "string"), ЗначениеАтрибута));

Так появляется новый элемент xs:elem, в котором содержится мой текст. Разработчики веб-сервиса говорят, что этого элемента не должно быть, а вместо него должен быть мой текст.

Если передавать просто строку ругается.
5 vicof
 
18.05.15
11:25
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">;
                <soap:Header/>
                <soap:Body> <request xmlns="http://xxxxxx.ru";
                               xmlns:xs="http://www.w3.org/2001/XMLSchema";
                               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
                <xs:elem>&lt;SYSTEM&gt;
&lt;BP_ID Value="SLV_AHR_IU"/&gt;
&lt;CIT_Version Value="1.0"/&gt;
&lt;ERR Value=""/&gt;
&lt;FORMAT Value="XML"/&gt;
&lt;INTERFACE_RET Value=""/&gt;
&lt;MAIN_ID Value=""/&gt;
&lt;MSG_ID Value="1"/&gt;
&lt;SYNC Value="N"/&gt;
&lt;SYS_ID Value="SLV_1C"/&gt;
&lt;TAR_ID Value="IBSO_DISTR"/&gt;
&lt;Version Value="002"/&gt;
&lt;/SYSTEM&gt;
&lt;DATA&gt;
&lt;ReqAhrIU&gt;
&lt;BEGIN_&gt;
&lt;ahr&gt;
&lt;BEGIN_&gt;
&lt;guid Value="123-123-123-123"/&gt;
&lt;dateOp Value="2015-05-12"/&gt;
&lt;code Value="1"/&gt;
&lt;amt Value="1000.01"/&gt;
&lt;typeOp Value="SLV_PAY"/&gt;
&lt;servOp Value="SLV_SERV1"/&gt;
&lt;/BEGIN_&gt;
&lt;/ahr&gt;
&lt;/BEGIN_&gt;
&lt;/ReqAhrIU&gt;
&lt;/DATA&gt;</xs:elem>
</request></soap:Body>
</soap:Envelope>
6 vicof
 
18.05.15
11:33
Сделал так:
Парам = СериализаторXDTO.ЗаписатьXDTO("Мой текст");
Прокси.process(Парам);
7 Serginio1
 
18.05.15
11:37
(6) а Прокси.process("Мой текст"); не проходит?

Заметил, что для AnyRef нужно явно указывать тип

парам=Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "string"), "Мой текст");

Прокси.process("парам");