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