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

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 или кнопку "Обновить" в браузере.
Рекламное место пустует