Имя: Пароль:
1C
1С v8
Ошибочный порядок записи XML
,
0 location
 
naïve
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.Закрыть();
1 pechkin
 
08.10.21
10:40
offers - 2 раза
2 ДенисЧ
 
08.10.21
10:40
Два разА офферсы пишешь?
3 pechkin
 
08.10.21
10:41
а понял. это ошибка в этой строке. Все верно. Нужен еще 1 верхний узел
4 location
 
naïve
08.10.21
10:44
(2) вроде 1
5 location
 
naïve
08.10.21
10:46
(3)     ЗаписьXML.ЗаписатьНачалоЭлемента("offers"); вот это верхний,
а дальше уже     ЗаписьXML.ЗаписатьНачалоЭлемента("offer");
6 1Сергей
 
08.10.21
10:47
(5) а в (0) не так
7 1Сергей
 
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) хм... у пьяниц в глазах двоится. А что нужно потребить, чтобы в глазах половинилось? )))
9 location
 
naïve
08.10.21
10:49
(7) первая строка оферс это ошибка
10 location
 
naïve
08.10.21
10:49
(9) ее нет в коде
11 location
 
naïve
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.Закрыть();
12 location
 
naïve
08.10.21
10:50
вот код, а ругается на строку  ЗаписьXML.ЗаписатьНачалоЭлемента("offers")
13 1Сергей
 
08.10.21
10:55
(12) а до этого кода ЗаписьXML пустая?
14 location
 
naïve
08.10.21
10:57
(13)     ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(Параметры.ПутьКФайлуОбмена + "\"+ Параметры.НаименованиеФайлаОбменаКатегории + ".xml", "UTF-8"); //Открываем файл для записи, указываем кодировку
    ЗаписьXML.ЗаписатьОбъявлениеXML();  // Записываем объявление XML
вот до этого кода что
15 location
 
naïve
08.10.21
10:58
(13) если убрать блок офферс, то записывается категориес отлично.
16 1Сергей
 
08.10.21
11:11
(14) т.е. не пустая?
17 location
 
naïve
08.10.21
11:17
(16) нет
18 azernot
 
08.10.21
11:21
А если обернуть это в один корневой элемент ROOT?

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

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


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