Имя: Пароль:
1C
1С v8
Как добавить элемент в СписокЭлементовDOM ?
0 verone118
 
24.12.19
22:14
Есть такой код:

ОбъектXML   = Новый ЧтениеXML;
ОбъектXML.УстановитьСтроку(Вложение.XMLДокумента);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM    = ПостроительDOM.Прочитать(ОбъектXML);
                  
//НужныйЭлемент  = ДокументDOM.ПолучитьЭлементыПоИмени("ИнфПолФХЖ1");
                    
//Корневой = ДокументDom.ЭлементДокумента;
                    
Элемент = ДокументDOM.СоздатьЭлемент("ТекстИнф");
Элемент.УстановитьАтрибут("Значение","ПутьТест");
Элемент.УстановитьАтрибут("Идентиф","НомерЗаказаТест");
                    
//Корневой.ДобавитьДочерний(Элемент);
                  
ЗаписьXML = Новый ЗаписьXML;
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьXML.УстановитьСтроку();
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);
СтрXML = ЗаписьXML.Закрыть();
                    
"НужныйЭлемент", тип СписокЭлементовDom - в него нужно добавить новую строку, т.е. "Элемент".
В конец документа добавляется через "Корневой", а вот в список не могу сообразить как сделать.
Подскажите кто шарит)
1 RomaH
 
naïve
25.12.19
07:05
ДобавитьДочерний?
2 RomaH
 
naïve
25.12.19
07:06
НужныйЭлемент.ДобавитьДочерний
3 Максимка_
Космонавтом
 
25.12.19
08:27
(3) Подозреваю, что если б все так просто было, ТС бы не завел топик
У типа данных "СписокЭлементовDom" нет методов вроде "Добавить()" или "ДобавитьДочерний()"
4 verone118
 
25.12.19
15:07
(2) не получится. У СпискаЭлементовDom из методов только Количество() и элемент по индексу (
5 verone118
 
25.12.19
15:09
(3) ага) возможно надо как то по-другому получать список, а не ПолучитьЭлементыПоИмени()
может через какое то получение узла..хз
6 pechkin
 
25.12.19
15:19
так у тебя коллекция.
нужно получить единичный узел
например СпискаЭлементовDom[0], и к нему уже добавлять
7 verone118
 
29.12.19
18:34
(6) спасибо друг, так и есть, разобрался
Пример кода, мало ли кому понадобится:

    СФ = Вложение.Документы1С[0].Значение;
    СтруктураЗК = ПолучитьДанныеПоДокументу(СФ);
    СписокАртикулов = СтруктураЗК.Артикулы;
    
    ОбъектXML   = Новый ЧтениеXML;
    ОбъектXML.УстановитьСтроку(Вложение.XMLДокумента);
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM    = ПостроительDOM.Прочитать(ОбъектXML);
    
    ЭлементАдрес = ДокументDOM.ПолучитьЭлементыПоИмени("АдрИнф")[0];
    ЭлементАдрес.УстановитьАтрибут("АдрТекст", СтруктураЗК.ЮрАдрес);
    
    Если Вложение.Получатель.Название = "Тестовый" Тогда
        
        НужныйЭлемент  = ДокументDOM.ПолучитьЭлементыПоИмени("ИнфПолФХЖ1")[0];
        НужныйЭлемент2  = ДокументDOM.ПолучитьЭлементыПоИмени("СведТов");
        
        Элемент = ДокументDOM.СоздатьЭлемент("ТекстИнф");
        Элемент.УстановитьАтрибут("Идентиф","ЗаказКлиентаНомер");
        Элемент.УстановитьАтрибут("Значен",СтруктураЗК.НомерЗаказа);
        НужныйЭлемент.ДобавитьДочерний(Элемент);
        
        н = 0;
        Для Каждого ЭлементСписка Из НужныйЭлемент2 Цикл
            Элемент2 = ДокументDOM.СоздатьЭлемент("ИнфПолФХЖ2");
            Элемент2.УстановитьАтрибут("Идентиф","Артикул");
            Элемент2.УстановитьАтрибут("Значен",СписокАртикулов[н].Значение);
            
            ЭлементСписка.ДобавитьДочерний(Элемент2);
            н = н + 1;    
        КонецЦикла;
        
    КонецЕсли;
    
    ЗаписьXML = Новый ЗаписьXML;
    
    ЗаписьDOM = Новый ЗаписьDOM;
    ЗаписьXML.УстановитьСтроку();
    ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);
    СтрXML = ЗаписьXML.Закрыть();