Имя: Пароль:
1C
1C 7.7
v7: Выгрузка в XML
,
0 dmitn
 
07.04.20
09:49
При выгрузке получается
<attribute BegPeriod="НачДата">2020-02-01</attribute>
<attribute EndPeriod="КонДата">2020-02-29</attribute>

нужно
<BegPeriod>2020-02-01</BegPeriod>
<EndPeriod>2020-02-29</EndPeriod>

Можно так сделать?
1 Ёпрст
 
07.04.20
09:51
Да. свойство Text установи а не атрибут
2 dmitn
 
07.04.20
09:57
хмлКорень = хмлФайлДанных.СоздатьПодчиненныйЭлемент("DataType");
    хмлЯчейка = хмлКорень.СоздатьПодчиненныйЭлемент("attribute");
    хмлЯчейка.УстановитьАтрибут("BegPeriod", "НачДата");
    хмлАтрибут = хмлФайлДанных.СоздатьУзел("text",Формат(ДатаГод(НачДата),"Ч(0)4")+"-"+Формат(ДатаМесяц(НачДата),"Ч(0)2")+"-"+Формат(ДатаЧисло(НачДата),"Ч(0)2"));
    хмлАтрибут.Значение = СокрЛП(Формат(ДатаГод(НачДата),"Ч(0)4")+"-"+Формат(ДатаМесяц(НачДата),"Ч(0)2")+"-"+Формат(ДатаЧисло(НачДата),"Ч(0)2"));
    хмлЯчейка.ДобавитьПодчиненный(хмлАтрибут);
3 dmitn
 
07.04.20
09:58
(1) где установить?
4 Ёпрст
 
07.04.20
09:58
(2) да ё.. не атрибут создавай, а узел и узлу установи text
5 Ёпрст
 
07.04.20
10:00
хмлЯчейка = хмлКорень.СоздатьПодчиненныйЭлемент("BegPeriod");
хмлЯчейка.text = "вася";//я не помню за синтаксис в клюшках
хмлЯчейка.УстановитьТекст("Вася");
6 Ёпрст
 
07.04.20
10:01
или так или метод есть, типа УстановитьТекст
7 dmitn
 
07.04.20
10:30
(5) получилось так
    хмлЯчейка = хмлКорень.СоздатьПодчиненныйЭлемент("BegPeriod");
    хмлЯчейка.Текст = Формат(ДатаГод(НачДата),"Ч(0)4")+"-"+Формат(ДатаМесяц(НачДата),"Ч(0)2")+"-"+Формат(ДатаЧисло(НачДата),"Ч(0)2");
8 dmitn
 
07.04.20
10:30
(6) метода УстановитьТекст нет
9 dmitn
 
08.04.20
06:18
подскажите еще по такому вопросу

Как поменять заголовок xml файла?

Вместо
<?xml version="1.0" encoding="UTF-8"?>

нужно
<DataType xmlns="http://www.dipo.org"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
10 dmitn
 
08.04.20
15:36
Был бы какой-нибудь метод типа СтрЗаменить но только на целый файл
11 Pooh
 
08.04.20
15:50
(10) в хмл установить пространство имен попробовать или альтернатива:
создать объект текст
открыть файл
получить строку
стрзаменить
заменить строку
сохранить файл
12 dmitn
 
08.04.20
15:53
(11) Слышал я про пространство имен, но как с этим работать, те более в 7.7?
13 Харлампий Дымба
 
08.04.20
17:30
В любой типовой ЗиК или Бух сделай глобальный поиск по строке
РезФайл    = СоздатьОбъект("AddIn.V7TextFile");
Покури вокруг неё.
14 Харлампий Дымба
 
08.04.20
17:31
РезФайл = СоздатьОбъект("AddIn.V7TextFile");
15 dmitn
 
08.04.20
17:38
(14) Спасибо. Попробую
16 dmitn
 
08.04.20
17:40
казалось бы причем здесь V7TextFile
17 Pooh
 
08.04.20
21:49
попробуй так
сохрани свой сформированный хмл как файл
открой его как текст
и замени строку на нужную тебе

для начала проверь ручками (через блокнот)
18 big
 
09.04.20
08:14
Уже используйте DOM и забудьте про эту косячную v7plus
19 hhhh
 
09.04.20
08:47
(18) а DOM разве не внутри v7plus находится?
20 trad
 
09.04.20
09:41
(9) если из xml-файла убрать
<?xml version="1.0" encoding="UTF-8"?>
то это будет не xml-файл

ну это если стандарты важны
21 big
 
10.04.20
09:01
(19) v7plus использует msmxl только 3-й версии. Из-за этого, при наличии в системе другой версии, методы выборки и отборов падают по ошибке.
22 dmitn
 
10.04.20
10:43
Вроде разобрался. Нужно так:

    хмлКорень = хмлФайлДанных.СоздатьПодчиненныйЭлемент("DataType",,"http://www.dipo.org";);
    хмлКорень.УстановитьПространствоИмен("http://www.w3.org/2001/XMLSchema","xsd";);
    хмлКорень.УстановитьПространствоИмен("http://www.w3.org/2001/XMLSchema-instance","xsi";);


Но только один нюанс. Они выводятся в обратном порядке. Как поменять порядок?
23 dmitn
 
10.04.20
11:14
Получается
<DataType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns="http://www.dipo.org">;

Нужно
<DataType xmlns="http://www.dipo.org";; xmlns:xsd="http://www.w3.org/2001/XMLSchema";; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;

и точки с запятой не проставляет