Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Выгрузка данных в XML из 1С 7.7 (http://forums.kuban.ru/f1040/vygruzka_dannyh_v_xml_iz_1s_7_7_a-7843209.html)

Pusto 23.06.2016 11:42

Выгрузка данных в XML из 1С 7.7
 
При выгрузке данных
используя подключение
Попытка
DOMDocument = CreateObject("Msxml2.DOMDocument.4.0");
Исключение
DOMDocument = CreateObject("Msxml2.DOMDocument");
КонецПопытки;

//прописываем заголовок с необходимыми параметрами, например
Header = DOMDocument.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8"" standalone=""yes""");
//Относим его к верхнему уровню структуры
DOMDocument.appendChild(Header);

хотелось бы второй строкой объявить узел
через пространсво имен (с двоеточием со своими атрибутами)

как это сделать?

MagAN 23.06.2016 12:44

хмл - текстовый формат,
DOMDocument - виндоусовая библиотека,
а при чем тут 7.7?

USSR 23.06.2016 13:15

изучать надо объектную модель этого самого DOM

bma1 23.06.2016 14:12

2(0) А может проще, через v7plus.dll ? Уже больше дюжины лет пользуюсь - никаких проблем.

Описание с примерами см здесь (архив сайта бывшего завсегдатая Т1С Чингачгука):
[url]http://web.archive.org/web/20040630185313/chin.dataltd.ru/index2.php?id=1c_xml[/url]

bma1 23.06.2016 14:14

2(2) А чего изучать? Там простейшая структура команд и их параметров.

USSR 23.06.2016 14:32

(4)ее и изучать

bma1 23.06.2016 16:10

[quote=USSR;42381151]ее и изучать[/quote]
Это не наш метод.

VZ 23.06.2016 16:27

v7plus.dll - Полно примеров...
[em] XMLАнализатор = СоздатьОбъект("AddIn.XMLParser");
ХМЛФайлДанных = XMLАнализатор.СоздатьДокумент();
хмлКорень = ХМЛФайлДанных.СоздатьПодчиненныйЭлемент("Файл");
Атрибут(хмлКорень, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
Атрибут(хмлКорень, "ИдФайл", ИмяФайла);
Атрибут(хмлКорень, "ВерсПрог", ВерсияПрограммы);
Атрибут(хмлКорень, "ВерсФорм", "5.01");

хмлДокумент = хмлКорень.СоздатьПодчиненныйЭлемент("Документ");
Атрибут(хмлДокумент, "КНД", "1110055");
Атрибут(хмлДокумент, "ДатаДок", Формат(ДатаДок, "ДДДММГГГГ"));
Атрибут(хмлДокумент, "НомЗаяв", Число(НомерДок));
Атрибут(хмлДокумент, "КодНО", КодНО);

хмСвНП = хмлДокумент.СоздатьПодчиненныйЭлемент("СвНП");
Если ОтправительЮрЛицо = 0 Тогда
хмлСвФЛ = хмСвНП.СоздатьПодчиненныйЭлемент("СвНАФЛ");
Атрибут(хмлСвФЛ, "ИННФЛ", ИНННалоговогоАгента);
хмФИО = хмСвНП.СоздатьПодчиненныйЭлемент("ФИО");
Атрибут(хмФИО, "Фамилия", ФамилияПредпринимателя);
Атрибут(хмФИО, "Имя", ИмяПредпринимателя);
Если ПустаяСтрока(ОтчествоПредпринимателя)<>1 Тогда
Атрибут(хмФИО, "Отчество", ОтчествоПредпринимателя);
КонецЕсли;
Иначе
хмлСвЮЛ = хмСвНП.СоздатьПодчиненныйЭлемент("СвНАЮЛ");
Атрибут(хмлСвЮЛ, "НаимОрг", НаименованиеНалоговогоАгента);
Атрибут(хмлСвЮЛ, "ИННЮЛ", ИНННалоговогоАгента);
Атрибут(хмлСвЮЛ, "КПП", КППНалоговогоАгента);
КонецЕсли;

хмПодписант = хмлДокумент.СоздатьПодчиненныйЭлемент("Подписант");
Атрибут(хмПодписант, "ПрПодп", ?(ОтправительЮрЛицо = 1,1,2));
Атрибут(хмПодписант, "ИННФЛ", СОКРЛП(ИННРуководителя));
Атрибут(хмПодписант, "Тлф", СОКРЛП(Телефон));
Если ОтправительЮрЛицо = 0 Тогда
хмФИО = хмПодписант.СоздатьПодчиненныйЭлемент("ФИО");
Атрибут(хмФИО, "Фамилия", ФамилияРуководителя);
Атрибут(хмФИО, "Имя", ИмяРуководителя);
Если ПустаяСтрока(ОтчествоРуководителя)<>1 Тогда
Атрибут(хмФИО, "Отчество", ОтчествоРуководителя);
КонецЕсли;
КонецЕсли;
....................[/em]
А можно тоже самое и без Анализатора. Можно через объект Adodb.Stream.
Задаешь кодировку и все такое
АдоСтрим.Charset = "utf-8";
[em] АдоСтрим.Type = 2;
АдоСтрим.Mode= 3;
АдоСтрим.Open();[/em]
и вперед, и с пестней, только за тегами либо следишь сам, либо используешь подпрограммы, сохраняя стег уровней.

Чучундер 26.06.2016 02:44

Линейные иксемели тупо пишу как текст не заморачиваясь со сторонними возможностями, привык уже

Струнин 29.06.2016 08:36

DOMDocument = ПолучитьПустоеЗначение();
Попытка
DOMDocument = createobject("Msxml2.DOMDocument.6.0");
Исключение
Попытка
DOMDocument = createobject("Msxml2.DOMDocument.4.0");
Исключение
Попытка
DOMDocument = createobject("Msxml2.DOMDocument.3.0");
Исключение
Попытка
DOMDocument = createobject("Msxml2.DOMDocument");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецПопытки;
КонецПопытки;
КонецПопытки;

Header = DOMDocument.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""" );
DOMDocument.appendChild(Header);

TagDocs = DOMDocument.createElement("ns:Documents");
AttrXml = DOMDocument.createAttribute("xmlns:xsi");
AttrXml.nodeValue = "http://www.w3.org/2001/XMLSchema-instance";
TagDocs.setAttributeNode(AttrXml);
...

Ветер в поле 04.07.2016 08:21

to 9
Копи паст - наше все?
Циклы не признаем?

Знал одного "программиста", который не признавал циклы. Простейшие программы у него были на тысячи строк...

Струнин 04.07.2016 11:19

Прости меня, мой брат.

bma1 04.07.2016 14:43

[quote=Ветер в поле;42450834]Знал одного "программиста", который не признавал циклы. Простейшие программы у него были на тысячи строк... [/quote]
А может ему платили построчно...

Чучундер 05.07.2016 01:08

[url]http://portall.zp.ua/video/muzhik-ja-nikhrena-ne-ponjal-chto-ty-skazal-mne/id-9aUUtIKpoSN.html[/url]


Текущее время: 20:15. Часовой пояс GMT +3.