Имя: Пароль:
1C
 
Помогите с чтением xml
0 katerinaUniv
 
19.09.16
08:41
Ошибка extra content at the end of document

файл выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<Корень>
    <Документ>
        <Строка Номенклатура="Лазерная эпиляция тотальное бикини" Количество="1" КоличествоУпаковок="1" Цена="6 000" Сумма="6 000" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="6 000"/>
        <Строка Номенклатура="Спа-программа &quot;Зеленый чай&quot;" Количество="1" КоличествоУпаковок="1" Цена="2 700" Сумма="2 700" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="2 700"/>
        <Строка Номенклатура="Пилинг желтый ММ" Количество="1" КоличествоУпаковок="1" Цена="5 000" Сумма="5 000" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="5 000"/>
        <Строка Номенклатура="Антицеллюлитный массаж 1 зона" Количество="1" КоличествоУпаковок="1" Цена="750" Сумма="750" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="750"/>
        <Строка Номенклатура="Антицеллюлитный массаж 1 зона" Количество="1" КоличествоУпаковок="1" Цена="750" Сумма="750" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="750"/>
        <Строка Номенклатура="Антицеллюлитный массаж 1 зона" Количество="1" КоличествоУпаковок="1" Цена="750" Сумма="750" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="750"/>
        <Строка Номенклатура="Лазерная эпиляция ноги комплекс" Количество="1" КоличествоУпаковок="1" Цена="9 400" Сумма="9 400" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="9 400"/>
        <Строка Номенклатура="Препаратная чистка" Количество="1" КоличествоУпаковок="1" Цена="2 300" Сумма="2 300" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="2 300"/>
        <Строка Номенклатура="Препаратная чистка" Количество="1" КоличествоУпаковок="1" Цена="2 300" Сумма="2 300" СтавкаНДС="Без НДС" СуммаНДС="0" Всего="2 300"/>
    </Документ>
1 katerinaUniv
 
19.09.16
08:42
код по загрузке так:
2 katerinaUniv
 
19.09.16
08:42
док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
                док.Организация = объект.Организация;
                док.Дата = объект.ДатаКон;
                док.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
                док.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("цена продажи");
                док.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("руб");
                док.КурсВзаиморасчетов = 1;
                док.КратностьВзаиморасчетов = 1;
                док.СуммаВключаетНДС = Ложь;
                док.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
                док.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");
                док.ПодразделениеОрганизации = объект.Подразделение;
                док.Склад = объект.Склад;
                док.Записать();

    XML = Новый ЧтениеXML;
    XML.ОткрытьФайл(объект.ПутьКФайлу + "\real.xml");
    Пока XML.Прочитать() Цикл
        Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            Сообщить("<" + XML.Имя + ">");
            Если XML.Имя = "Строка" Тогда
                Номенклатура = "";
                Количество = "";
                КоличествоУпаковок = "";
                Цена = "";
                Сумма = "";
                СтавкаНДС = "";
                СуммаНДС = "";
                Всего = "";
                                
                Пока XML.ПрочитатьАтрибут() Цикл
                    Сообщить(XML.Имя + " = " + XML.Значение);
                    Если XML.Имя = "Номенклатура" Тогда
                        Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Строка(XML.Значение)));
                    КонецЕсли;
                    Если XML.Имя = "Количество" Тогда
                        Количество = Число(XML.Значение);
                    КонецЕсли;
                    Если XML.Имя = "КоличествоУпаковок" Тогда
                        КоличествоУпаковок = Число(XML.Значение);
                    КонецЕсли;
                    Если XML.Имя = "Цена" Тогда
                        Цена = Число(XML.Значение);
                    КонецЕсли;
                    Если XML.Имя = "Сумма" Тогда
                        Сумма = Число(XML.Значение);
                    КонецЕсли;
                    Если XML.Имя = "СтавкаНДС" Тогда
                        ставкаНДСстр = СокрЛП(Строка(XML.Значение));
                        Если СтавкаНДСстр = "18/118" ИЛИ СтавкаНДСстр = "18" Тогда
                            ставкаНДС = Перечисления.СтавкиНДС.НДС18;
                        ИначеЕсли СтавкаНДСстр = "10/110" ИЛИ СтавкаНДССтр = "10" Тогда
                            ставкаНДС = Перечисления.СтавкиНДС.НДС10;
                        ИначеЕсли СтавкаНДССтр = "Без НДС" Тогда
                            ставкаНДС = Перечисления.СтавкиНДС.БезНДС;
                        Иначе
                            ставкаНДС = Перечисления.СтавкиНДС.НДС0;
                        КонецЕсли;
                    КонецЕсли;
                    Если XML.Имя = "СуммаНДС" Тогда
                        СуммаНДС = Число(XML.Значение);
                    КонецЕсли;
                    Если XML.Имя = "Всего" Тогда
                        Всего = Число(XML.Значение);
                    КонецЕсли;
                    
                КонецЦикла;
                
                //пишем новую строку реализации
                нСтрока = док.Услуги.Добавить();
                нСтрока.Номенклатура = номенклатура;
                нСтрока.Количество = Количество;
                нСтрока.Цена = цена;
                нСтрока.Сумма = Сумма;
                Если ставкаНДС = Перечисления.СтавкиНДС.БезНДС Или ставкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
                    нСтрока.СуммаНДС = 0;
                ИначеЕсли ставкаНДС = Перечисления.СтавкиНДС.НДС18 Или ставкаНДС = Перечисления.СтавкиНДС.НДС18_118 Тогда
                    нСтрока.СуммаНДС = Окр(нСтрока.Сумма * 0.18,2);
                ИначеЕсли ставкаНДС = Перечисления.СтавкиНДС.НДС10 Или ставкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
                    нСтрока.СуммаНДС = Окр(нСтрока.Сумма * 0.1, 2);
                КонецЕсли;
                нСтрока.СтавкаНДС = СтавкаНДС;
                нСтрока.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
                нСтрока.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
                док.Записать();
            КонецЕсли;
            
            //Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
            //    Сообщить(XML.Значение);
            //КонецЕсли;
            //
            //Если XML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
            //    Сообщить("");
            //КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    XML.Закрыть();
3 mehfk
 
19.09.16
08:46
4 katerinaUniv
 
19.09.16
08:56
но у меня все нормально вроде бы написано...
5 katerinaUniv
 
19.09.16
08:56
я знаю что это
6 katerinaUniv
 
19.09.16
08:56
но все теги закрытые и ровные
7 mehfk
 
19.09.16
09:00
Открой XML браузером.
8 Адинэснег
 
19.09.16
14:08
а где </Корень> ?
9 mehfk
 
19.09.16
17:50
(8) "Семён Семёныч!" (С)
Программист всегда исправляет последнюю ошибку.