Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Ошибочный порядок записи XML

Ошибочный порядок записи XML
Я
   location
 
08.10.21 - 10:39
НЕ вижу где ошибка, вроде 2 "Корневых". Подскажите плз.
Ругается на ээту строку
ЗаписьXML.ЗаписатьНачалоЭлемента("offers");

    ЗаписьXML.ЗаписатьНачалоЭлемента("categories");
    Пока Выборка1.СледующийПоЗначениюПоля("Родитель") Цикл  //родитель
        Пока Выборка1.СледующийПоЗначениюПоля("Ссылка") Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("category");
            ЗаписьXML.ЗаписатьАтрибут("Id", Строка(Формат(Число(Выборка1.КодКатегории),"ЧГ=0")));
            ЗаписьXML.ЗаписатьКонецЭлемента();  //category
        КонецЦикла;
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента(); //categories
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("offers");
    Пока Выборка2.СледующийПоЗначениюПоля("КатегорияРодитель") Цикл
        Пока Выборка2.СледующийПоЗначениюПоля("Ссылка") Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("offer");
            ЗаписьXML.ЗаписатьАтрибут("id", Строка(Формат(Число(Выборка2.Код),"ЧГ=0")));
            ЗаписьXML.ЗаписатьНачалоЭлемента("categoryid");
            ЗаписьXML.ЗаписатьТекст(Строка(Формат(Число(Выборка2.КодКатегорииРодителя),"ЧГ=0")));
            ЗаписьXML.ЗаписатьКонецЭлемента();  //categoryid
            ЗаписьXML.ЗаписатьКонецЭлемента(); //offer
        КонецЦикла;
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента(); //offers
    ЗаписьXML.Закрыть();
   pechkin
 
1 - 08.10.21 - 10:40
offers - 2 раза
   ДенисЧ
 
2 - 08.10.21 - 10:40
Два разА офферсы пишешь?
   pechkin
 
3 - 08.10.21 - 10:41
а понял. это ошибка в этой строке. Все верно. Нужен еще 1 верхний узел
   location
 
4 - 08.10.21 - 10:44
(2) вроде 1
   location
 
5 - 08.10.21 - 10:46
(3)     ЗаписьXML.ЗаписатьНачалоЭлемента("offers"); вот это верхний, 
а дальше уже     ЗаписьXML.ЗаписатьНачалоЭлемента("offer");
   1Сергей
 
6 - 08.10.21 - 10:47
(5) а в (0) не так
   1Сергей
 
7 - 08.10.21 - 10:47
ЗаписьXML.ЗаписатьНачалоЭлемента("offers");

    ЗаписьXML.ЗаписатьНачалоЭлемента("categories");
    Пока Выборка1.СледующийПоЗначениюПоля("Родитель") Цикл  //родитель

        Пока Выборка1.СледующийПоЗначениюПоля("Ссылка") Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("category");
            ЗаписьXML.ЗаписатьАтрибут("Id", Строка(Формат(Число(Выборка1.КодКатегории),"ЧГ=0")));
            ЗаписьXML.ЗаписатьКонецЭлемента();  //category

        КонецЦикла;
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();//categories

    
    ЗаписьXML.ЗаписатьНачалоЭлемента("offers")//////////////////////////////////////////////////////////// ЭТО ЧО???

    Пока Выборка2.СледующийПоЗначениюПоля("КатегорияРодитель") Цикл
        Пока Выборка2.СледующийПоЗначениюПоля("Ссылка") Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("offer");
            ЗаписьXML.ЗаписатьАтрибут("id", Строка(Формат(Число(Выборка2.Код),"ЧГ=0")));
            ЗаписьXML.ЗаписатьНачалоЭлемента("categoryid");
            ЗаписьXML.ЗаписатьТекст(Строка(Формат(Число(Выборка2.КодКатегорииРодителя),"ЧГ=0")));
            ЗаписьXML.ЗаписатьКонецЭлемента();  //categoryid

            ЗаписьXML.ЗаписатьКонецЭлемента();//offer

        КонецЦикла;
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();//offers

    ЗаписьXML.Закрыть();
   ДенисЧ
 
8 - 08.10.21 - 10:48
(4) хм... у пьяниц в глазах двоится. А что нужно потребить, чтобы в глазах половинилось? )))
   location
 
9 - 08.10.21 - 10:49
(7) первая строка оферс это ошибка
   location
 
10 - 08.10.21 - 10:49
(9) ее нет в коде
   location
 
11 - 08.10.21 - 10:49
ЗаписьXML.ЗаписатьНачалоЭлемента("categories");
    Пока Выборка1.СледующийПоЗначениюПоля("Родитель") Цикл  //родитель

        Пока Выборка1.СледующийПоЗначениюПоля("Ссылка") Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("category");
            ЗаписьXML.ЗаписатьАтрибут("Id", Строка(Формат(Число(Выборка1.КодКатегории),"ЧГ=0")));
            ЗаписьXML.ЗаписатьКонецЭлемента();  //category

        КонецЦикла;
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();//categories

    
    ЗаписьXML.ЗаписатьНачалоЭлемента("offers");
    Пока Выборка2.СледующийПоЗначениюПоля("КатегорияРодитель") Цикл
        Пока Выборка2.СледующийПоЗначениюПоля("Ссылка") Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("offer");
            ЗаписьXML.ЗаписатьАтрибут("id", Строка(Формат(Число(Выборка2.Код),"ЧГ=0")));
            ЗаписьXML.ЗаписатьНачалоЭлемента("categoryid");
            ЗаписьXML.ЗаписатьТекст(Строка(Формат(Число(Выборка2.КодКатегорииРодителя),"ЧГ=0")));
            ЗаписьXML.ЗаписатьКонецЭлемента();  //categoryid

            ЗаписьXML.ЗаписатьКонецЭлемента();//offer

        КонецЦикла;
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();//offers

    ЗаписьXML.Закрыть();
   location
 
12 - 08.10.21 - 10:50
вот код, а ругается на строку  ЗаписьXML.ЗаписатьНачалоЭлемента("offers")
   1Сергей
 
13 - 08.10.21 - 10:55
(12) а до этого кода ЗаписьXML пустая?
   location
 
14 - 08.10.21 - 10:57
(13)     ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(Параметры.ПутьКФайлуОбмена + "\"+ Параметры.НаименованиеФайлаОбменаКатегории + ".xml", "UTF-8");//Открываем файл для записи, указываем кодировку

    ЗаписьXML.ЗаписатьОбъявлениеXML();  // Записываем объявление XML

вот до этого кода что
   location
 
15 - 08.10.21 - 10:58
(13) если убрать блок офферс, то записывается категориес отлично.
   1Сергей
 
16 - 08.10.21 - 11:11
(14) т.е. не пустая?
   location
 
17 - 08.10.21 - 11:17
(16) нет
   azernot
 
18 - 08.10.21 - 11:21
А если обернуть это в один корневой элемент ROOT?

ЗаписьXML.ЗаписатьНачалоЭлемента("ROOT");
    ЗаписьXML.ЗаписатьНачалоЭлемента("categories");
    Пока Выборка1.СледующийПоЗначениюПоля("Родитель") Цикл  //родитель

    ...
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();//offers

ЗаписьXML.ЗаписатьКонецЭлемента();//ROOT


    ЗаписьXML.Закрыть();    


Срабоатает?
   location
 
19 - 08.10.21 - 11:21
провеврил, только что закоментил блок категориес, оферсы записались нормально, коменчу оферсы, категориес записываются нормально.
Вместе не хотят
   ChMikle
 
20 - 08.10.21 - 11:23
(19) вы файл сохраните и откройте в XML , по узлам скомпонуйте и увидите какой не сворачивается
   location
 
21 - 08.10.21 - 11:24
(20) так сворачивается все, если по отдельности
   location
 
22 - 08.10.21 - 11:24
а если вместе то ошибка
   ChMikle
 
23 - 08.10.21 - 11:24
(21) именно выполнив весь
   ChMikle
 
24 - 08.10.21 - 11:25
вообще не сохраняется файл ?
   DrShad
 
25 - 08.10.21 - 11:26
(18) +100500
   DrShad
 
26 - 08.10.21 - 11:27
не может быть два корневых элемента
   location
 
27 - 08.10.21 - 11:28
(18) обернул конструкцию. все заработало.
   DrShad
 
28 - 08.10.21 - 11:29
и забудь уже про записьXML пиши через ДокументDOM
   ChMikle
 
29 - 08.10.21 - 11:31
у вас как-то странно 2 узла с одинаковым название offers
   location
 
30 - 08.10.21 - 11:39
(29) первый, то строка с ошибкой
 
 
   location
 
31 - 08.10.21 - 11:54
(28) пример можно, как эту конструкцию записать через ДокументDOM? чем он лучше обычной записьXML?
   pechkin
 
32 - 08.10.21 - 12:23
нужно именно чтоб 2 верхних уровня было?.
тогда только текстом


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