Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1С XDTO как передать значения в массив?

1С XDTO как передать значения в массив?
Я
   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>
   svv1979
 
1 - 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;
   acht
 
2 - 01.12.20 - 21:04
Схему показывай
   svv1979
 
3 - 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;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.