Имя: Пароль:
1C
1С v8
XDTO дублирует тэг
0 nadvig
 
18.09.20
12:52
В SOAPUI определяется запрос как

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:urn="urn:XXXXXXXXXXXX">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:GetMobileTariffInfoRequest>
         <mobileTariffIdList>
            <!--1 or more repetitions:-->
            <mobileTariffId>?</mobileTariffId>
         </mobileTariffIdList>
      </urn:GetMobileTariffInfoRequest>
   </soapenv:Body>
</soapenv:Envelope>

XDTO формирует такой текст запроса

<m:GetMobileTariffInfoRequest xmlns:m="urn:XXXXXXXXXXXXXXX" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">;
               <mobileTariffIdList xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="m:GetMobileTariffInfoRequest">
                              <m:mobileTariffIdList>
                                            <m:mobileTariffId>235045</m:mobileTariffId>
                              </m:mobileTariffIdList>
               </mobileTariffIdList>
</m:GetMobileTariffInfoRequest>
1 nadvig
 
18.09.20
12:53
Т.е. тэг mobileTariffIdList дублируется.
Подскажите, пожалуйста, как обойти этот косяк со списочным типом?
2 nadvig
 
18.09.20
12:58
код формирования

Прокси = Новый WSПрокси(Определение,
                        "urn:XXXXXXXXXXXXXXX",
                        "CRMServiceOutService",
                        "HTTP_Port");

Прокси.Пользователь = ИмяПользователя;
Прокси.Пароль       = Пароль;

ТипWSПараметраRequest = Прокси.ФабрикаXDTO.Пакеты.Получить("urn:XXXXXXXXXXXXXX").Получить("GetMobileTariffInfoRequest");
WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметраRequest);

ТипОбъектаitemList = Прокси.ФабрикаXDTO.Пакеты.Получить("urn:XXXXXXXXXXXXXXXX").Получить("MobileTariffIdList");

ОбъектitemList = Прокси.ФабрикаXDTO.Создать(ТипОбъектаitemList);
ОбъектitemList.mobileTariffId.Добавить("235045");

WSПараметр.mobileTariffIdList = ОбъектitemList;
3 Вафель
 
18.09.20
17:23
а изначально WSПараметр.mobileTariffIdList чему равно. до присваивания?
4 nadvig
 
18.09.20
17:34
Неопределено
5 acht
 
18.09.20
17:41
Чой-то бред какой-то у тебя написан, там все проще должно быть, типа

Прокси = Новый WSПрокси ...

ТипСписка = Прокси.ФабрикаXDTO.Тип("urn:XXXXXXXXXXXXXXXX", "MobileTariffIdList");
Список = Прокси.ФабрикаXDTO.Создать(ТипСписка);

Список.Добавить("235045");

Результат = Прокси.GetMobileTariffInfo(Список)
6 nadvig
 
18.09.20
17:58
ОК, пробую только ОбъектitemList передавать.
А как можно отловить, что на выходе генерится? Визуально увидеть текст запроса. Мне внешняя система, в которой этот запрос получают не доступна.
7 nadvig
 
18.09.20
18:05
Если через ЗаписьXML получать текст, то пишет, что тип принадлежит пакету, отсутствующему в фабрике типов XDTO (wsdl из файла загружал).
Да и это же только внутренняя часть запроса.