Имя: Пароль:
1C
 
Работа с *.xml - файлами.
0 san_nisan
 
20.03.09
14:47
Здравствуйте, подскажите, пожалуйста, я делаю внешний отчёт. И мне надо создать выходной файл xml с узлами и подузлами. Это делается только с помощью компоненты v7plus.dll
1 ТелепатБот
 
гуру
20.03.09
14:47
2 san_nisan
 
20.03.09
14:48
не пойму как создать xml - файл
3 Если
 
20.03.09
14:56
ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll");
   XML = СоздатьОбъект("AddIn.XMLParser");

   ИмяФайла = ххххххх+".xml";
   Выгрузка = XML.СоздатьДокумент();
   Начало = Выгрузка.СоздатьПодчиненныйЭлемент("Exchange");
   Выгрузка.Записать(ИмяФайла);
4 san_nisan
 
20.03.09
15:04
А для чего нужно вот это: Начало = Выгрузка.СоздатьПодчиненныйЭлемент("Exchange");
5 Если
 
20.03.09
15:06
(4) а без головного элемента хрень, а не хмл запишется.
6 Если
 
20.03.09
15:06
+(5) название какое хочешь поставь.
7 san_nisan
 
20.03.09
15:06
а что значит головной элемент
8 Rebelx
 
20.03.09
15:07
9 Если
 
20.03.09
15:07
<?xml version="1.0" encoding="windows-1251" standalone="no" ?>
- <Exchange>
10 anddro
 
20.03.09
15:07
(0) Не обязательно "только с помощью компоненты v7plus.dll"
Объект = СоздатьОбъект("MSXML2.DOMDocument")
и далее работа методами этого объекта.
11 san_nisan
 
20.03.09
15:09
(10) а где найти функции для работы с MSXML2.DOMDocument
12 DGorgoN
 
20.03.09
15:11
(11) то что я знаю:

   //Для элементов    
   ФайлXml=СоздатьОбъект("MSXML2.DOMDocument");
   Заголовок = ФайлXml.CreateProcessingInstruction("xml", "version=""1.0"" encoding=""windows-1251""" );
   ФайлXml.AppendChild(Заголовок);
   Корень = ФайлXml.CreateElement("Nomenclature");
   ФайлXml.AppendChild(Корень);    
   спрНоменклатура = СоздатьОбъект("Справочник.товары");
   спрНоменклатура.ВыбратьЭлементы();                  
   Пока спрНоменклатура.ПолучитьЭлемент()=1 Цикл  
       //Запишем сам элемент      
       Если спрНоменклатура.ЭтоГруппа()=0 Тогда  
           Если спрНоменклатура.ПометкаУдаления()=1 Тогда
               продолжить;
           КонецЕсли;
           ЭлементСправочника=ФайлXml.CreateElement("Element");
           ЭлементСправочника.Text = СокрЛП(спрНоменклатура.Наименование);
           ЭлементСправочника.SetAttribute("SKey", СокрЛП(спрНоменклатура.Код));
           Если спрНоменклатура.Родитель.Выбран()=1 Тогда
               ЭлементСправочника.SetAttribute("Parent", СокрЛП(спрНоменклатура.Родитель.Код));
           КонецЕсли;
           Корень.AppendChild(ЭлементСправочника);
           //Запишем табличные свойства элемента  
           //1
           СвойстваЭлементаСправочника=ФайлXml.CreateElement("TableProperties");
           СвойстваЭлементаСправочника.Text = "Артикул";
           СвойстваЭлементаСправочника.SetAttribute("Value", СокрЛП(спрНоменклатура.сАртикул));
           ЭлементСправочника.AppendChild(СвойстваЭлементаСправочника);
           //2
           СвойстваЭлементаСправочника=ФайлXml.CreateElement("TableProperties");
           СвойстваЭлементаСправочника.Text = "Розн. цена";
           СвойстваЭлементаСправочника.SetAttribute("Value", СокрЛП(спрНоменклатура.чЦена));        
           ЭлементСправочника.AppendChild(СвойстваЭлементаСправочника);
           //Запишем свойства элемента  
           //1
           СвойстваЭлементаСправочника=ФайлXml.CreateElement("Properties");
           СвойстваЭлементаСправочника.Text = "Ед.изм.";
           СвойстваЭлементаСправочника.SetAttribute("Value", СокрЛП(спрНоменклатура.асОсновнаяУпаковка));
           ЭлементСправочника.AppendChild(СвойстваЭлементаСправочника);
           //2
           СвойстваЭлементаСправочника=ФайлXml.CreateElement("Properties");
           СвойстваЭлементаСправочника.Text = "Производитель";
           СвойстваЭлементаСправочника.SetAttribute("Value", СокрЛП(спрНоменклатура.асИзготовитель));
           ЭлементСправочника.AppendChild(СвойстваЭлементаСправочника);
       КонецЕсли;
   КонецЦикла;
   ФайлXml.Save("c:\iCatalogNomenclature.xml");
13 anddro
 
20.03.09
15:16
(11) в яндексе/google, только для v7plus.dll все документировано в als, только этим он и проще, но методов меньше.
+ OpenConf тоже показывает его методы
(12) да, именно в таком ключе
кроме того MSXML2.DOMDocument может делать трансформацию по xslt шаблону, а  MSXML2.DOMDocument.4.0 еще и валидацию делать умеет