Имя: Пароль:
1C
1С v8
1С XDTO как передать значения в массив?
0 svv1979
 
01.12.20
20:36
Как передать значения в Param?
У AdditionalAccountAttributes тип Массив Param

WSПараметр1.AdditionalAccountAttributes = WSДопПараметр;// выдает ошибку

Несоответствие типов XDTO:
Тип '{PayService.Service}Param' не соответствует типу '{PayService.Service}ArrayOfParam'
Тип свойства не соответствует типу значения

Пример как должно быть
<Attributes>
<Account>861000689319</Account>
<AdditionalAccountAttributes>
<Param>
<Name>ИНН регионального оператора</Name>
<Value>8602166551</Value>
</Param>
</AdditionalAccountAttributes>
</Attributes>
1 svv1979
 
01.12.20
20:38
Модуль

        WSОпределение = Новый WSОпределения(НашВебСервис);
        WSСервис=WSОпределение.Сервисы[0];
        прокси                        = Новый WSПрокси(WSОпределение, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя);
        
        
        ТипWSДопПараметра            = Прокси.ФабрикаXDTO.Пакеты.Получить((WSСервис.URIПространстваИмен)).Получить("Param");
        
        WSДопПараметр                   = Прокси.ФабрикаXDTO.Создать(ТипWSДопПараметра);
        
        WSДопПараметр.Name             = "ИНН регионального оператора";
        WSДопПараметр.Value         = "8602166551";
        
            
            
        
        ТипWSПараметра1                = Прокси.ФабрикаXDTO.Пакеты.Получить((WSСервис.URIПространстваИмен)).Получить("PayAttributes");
        
        WSПараметр1                       = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра1);
        WSПараметр1.Account         = Стр.ЛицевойСчет.Код;
        
        WSПараметр1.AdditionalAccountAttributes  = WSДопПараметр;
  
        
        ТипWSПараметра                 = Прокси.ФабрикаXDTO.Пакеты.Получить((WSСервис.URIПространстваИмен)).Получить("PayInfo");
        PayExtID                    = "VGRKAPREM"+Объект.Номер+"_"+Стр.НомерСтроки;
        
        WSПараметр                       = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
        WSПараметр.PayExtID            = PayExtID;
        WSПараметр.PayDate            = Объект.Дата;
        WSПараметр.SerID            = "500284";//КодУслуги взнос на кап ремонт
        WSПараметр.SerComINN        = СокрЛП(Объект.Организация.ИНН);
        
        Если Объект.Пеня Тогда
            WSПараметр.PayType            = "Peny";//ВидУслуги "Peny"
        Иначе
            WSПараметр.PayType            = "Principal";//ВидУслуги "Основной долг"
        КонецЕсли;
        
        WSПараметр.Sum                = Стр.Сумма*100;
        WSПараметр.Attributes        = WSПараметр1;
2 acht
 
01.12.20
21:04
Схему показывай
3 svv1979
 
02.12.20
06:49
Решение

ТипArrayOfParam  = Прокси.ФабрикаXDTO.Тип(WSСервис.URIПространстваИмен, "ArrayOfParam");
ТипParam  = Прокси.ФабрикаXDTO.Тип(WSСервис.URIПространстваИмен, "Param");

ArrayOfParam = Прокси.ФабрикаXDTO.Создать(ТипArrayOfParam);
Param = Прокси.ФабрикаXDTO.Создать(ТипParam);
...
ArrayOfParam.Param.Добавить(Param );
...
WSПараметр1.AdditionalAccountAttributes = ArrayOfParam;