Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

запись XML 1С

запись XML 1С
Я
   makkut
 
27.07.18 - 10:59
пытаюсь заполнить циклом файл XML. В Итоге 1С ругается на Ошибочный порядок записи XML
Хочу получить вот так. КТо объяснит как обойти ошибку?
<СведТов НомСтр="1" НаимТов="товар1" ОКЕИ_Тов="796 " КолТов="1 000" ЦенаТов="203,39" СтТовБезНДС="203 389,83" НалСт="18%" СтТовУчНал="240 000,00"/>
<СведТов НомСтр="2" НаимТов="товар2" ОКЕИ_Тов="796 " КолТов="5" ЦенаТов="50,00" СтТовБезНДС="250,00" НалСт="18%" СтТовУчНал="295,00"/>

Для каждого СтрДанных Из ЭкземплярДанныхДляПечати.ТабличнаяЧасть Цикл
            НомерСтроки = НомерСтроки  + 1;
            Файл.ЗаписатьНачалоЭлемента("СведТов");
            Файл.ЗаписатьАтрибут("НомСтр",         Строка(НомерСтроки));
            Файл.ЗаписатьАтрибут("НаимТов",     Строка(СтрДанных.Товар));
             Файл.ЗаписатьАтрибут("ОКЕИ_Тов",    Строка(СтрДанных.ЕдиницаИзмеренияКод));
             Файл.ЗаписатьАтрибут("КолТов",         Строка(СтрДанных.Количество));
             Файл.ЗаписатьАтрибут("ЦенаТов",     Строка(Формат(СтрДанных.Цена, "ЧДЦ=2")));
             Файл.ЗаписатьАтрибут("СтТовБезНДС", Строка(Формат(СтрДанных.Сумма, "ЧДЦ=2")));
             Файл.ЗаписатьАтрибут("НалСт",         Строка(Формат(СтрДанных.СтавкаНДС,"ЧДЦ=2")));
             Файл.ЗаписатьАтрибут("СтТовУчНал",     Строка(Формат(СтрДанных.СуммаНДС + СтрДанных.Сумма,"ЧДЦ=2"))); 
            Файл.ЗаписатьКонецЭлемента() ;
            Файл.ЗаписатьКонецЭлемента() ;
        КонецЦикла;



{ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма.Форма(368)}: Ошибка при вызове метода контекста (ЗаписатьКонецЭлемента)
      Файл.ЗаписатьКонецЭлемента() ;    
по причине:
Ошибочный порядок записи XML
 
 
   sechs
 
1 - 27.07.18 - 11:03
А какого результата ты хочешь добится, записывая одно начало элемента и два конца?
   makkut
 
2 - 27.07.18 - 11:21
(1) там опечатался , одиф фиг ругается
   sechs
 
3 - 27.07.18 - 11:24
(2) >  одиф фиг
Отсюжу ен фидно
   Ботаник Гарден Меран
 
4 - 27.07.18 - 11:27
Добавь корневой элемент.
   makkut
 
5 - 27.07.18 - 11:33
(4) корневой элемент есть выше не скопировал его просто сюда
Файл.ЗаписатьНачалоЭлемента("ТаблСчФакт");
   Ботаник Гарден Меран
 
6 - 27.07.18 - 11:36
Сколько еще кусочков не "скопировано сюда" ?
   makkut
 
7 - 27.07.18 - 11:38
(6) когда отдельно корень и элементы вывожу всё норм, походу с остальными перемудрил ....
   makkut
 
8 - 27.07.18 - 11:40
все нашёл причину лишняя строчка была в коде Файл.ЗаписатьКонецЭлемента() (не в самом цикле)
   echo77
 
9 - 27.07.18 - 15:18
Если нужно просто писануть объект в XML, то вот самое простое:

// Процедура выполняет сериализацию переданного объекта в указанный XML-файл

//
// Параметры:

//  ОбъектСериализации    - Произвольный - произвольный объект, который может быть сериализован
//                          например Массив, СписокЗначений(читать справку)

//  ИмяФайла            - Строка - полное имя файла, в который будет записан
//                          сериализованный объект

//
Процедура СериализоватьОбъектВXML(ОбъектСериализации, ИмяФайла)
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ИмяФайла);
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОбъектСериализации);
    
    ЗаписьXML.Закрыть();
    
КонецПроцедуры
   Вафель
 
10 - 27.07.18 - 15:19
(9) у объекта может быть слишком много реквизитов, чтоб их все выгружать
 
 Рекламное место пустует

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