Имя: Пароль:
1C
1C 7.7
v7: Как сделать выгрузку в XML файл такого формата?
0 Босечка
 
03.10.11
08:48
Как сделать выгрузку в XML файл такого формата?

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <ROWSET>
- <ROW>
 <LN_CODE>№ листа нетрудоспособности</LN_CODE>
 <LN_DATE>дата выдачи</LN_DATE>
 <SNILS>СНИЛС</SNILS>
 <TREAT1_DT1>Освобождение от работы с какого числа</TREAT1_DT1>
 <TREAT1_DT2>Освобождение от работы по какое число</TREAT1_DT2>
 <DT1>причитается пособие за период с</DT1>
 <DT2>причитается пособие за период по</DT2>
 </ROW>
 </ROWSET>
1 filh
 
03.10.11
08:50
пиши в текст, например или сразу в xml
2 Ёпрст
 
гуру
03.10.11
08:56
Попытка
       Анализатор = СоздатьОбъект("AddIn.XMLParser");
   Исключение
       Если ЗагрузитьВнешнююКомпоненту("v7plus.dll")<> 1 Тогда
           Предупреждение("Компонента v7plus.dll не найдена!");
           Возврат ;
       КонецЕсли;
       Анализатор = СоздатьОбъект("AddIn.XMLParser")
   КонецПопытки;
   Док = Анализатор.СоздатьПоследовательноЗаписываемыйДокумент();
       
       ИмяФайла = "вася.xml";
       
       Док.ИмяФайла = ИмяФайла;
       Док.ОткрытьЭлемент("ROWSET");
       Док.ОткрытьЭлемент("ROW");
               Док.ВключитьЭлемент("LN_CODE","№ листа нетрудоспособности");
...............                Док.ВключитьЭлемент("TREAT1_DT1","Освобождение от работы с какого числа");

       Док.ЗакрытьЭлемент();
           
           Док.ЗакрытьЭлемент();
           Док.Сбросить();
           Док.Завершить();
           
           
           
           Сообщить("записан файли "+ИмяФайла,"i");
3 Босечка
 
03.10.11
09:01
Спасибо.
4 Босечка
 
03.10.11
09:20
Все вроде сделала, но encoding="UTF-8" не проставляется. Что такое encoding="UTF-8" ?
5 Ёпрст
 
гуру
03.10.11
09:25
кодировка вестимо
6 Босечка
 
03.10.11
09:37
(5) А где ее надо проставить?
7 andrewks
 
03.10.11
09:54
(6)

Кодировка
Синтаксис
Кодировка
Назначение
Позволяет установить/считать кодировку, в которой сохраняется документ. Задается строкой в соответствии стандартными наименованиями наборов символов для использования в Интерненте. По умолчанию установлена кодировка windows-1251.
Со списком определенных наименований наборов символов можно ознакомиться по адресу http://www.isi.edu/in-notes/iana/assignments/character-sets.

Пример:
Документ.Кодировка = ''UTF-16'';
8 andrewks
 
03.10.11
09:56
ещё вариант:

ЗагрузитьИзСтроки("<?xml version=""1.0"" encoding=""utf-8""?>")
9 andrewks
 
03.10.11
09:57
точнее, тебе так надо:
ЗагрузитьИзСтроки("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes"" ?>")
10 andrewks
 
03.10.11
10:01
(0) да, и рекомендую тебе использовать MSXML.DOMDocument, а не v7plus
11 Ёпрст
 
гуру
03.10.11
10:02
(10) если она ужо 1с-овские поделки самостоятельно не осилила, куда уж там до разбирания англоязычных методов модели дома.
12 andrewks
 
03.10.11
10:05
(11) зато пе надо будет опять бежать на форум и нудно переписывать обработку, когда кривой v7+ начнёт глючить, или не позволит сделать какую-нибудь фишку.

да там, на самом деле, не сложнее, чем v7+ изучить. даже легче, имхо

   Попытка
       ДОМ=СоздатьОбъект("MSXML.DOMDocument");
       Узел=ДОМ.CreateProcessingInstruction("xml","version=""1.0"" encoding=""windows-1251""");
   Исключение
       Сообщить("Не удалось создать объект DOMDocument","!");
       Возврат;
   КонецПопытки;
   ДОМ.insertBefore(Узел,);
   
   
   ТекЭлем=ДОМ.appendChild(ДОМ.createElement("Файл"));
   ТекЭлем.text="Ха-ха-ха!";
   ТекЭлем.setAttribute("Атрибут1","Хо-хо-хо!");
   
   ТекЭлем=ТекЭлем.appendChild(ДОМ.createElement("СодержимоеФайла"));
   ТекЭлем.text="Йо-ххо!!!";
   ТекЭлем.setAttribute("Атрибут1","Ух ты!!!");
   ДОМ.save("D:\1.xml");
13 Ёпрст
 
гуру
03.10.11
10:16
можно еще через
СоздатьОбъект("Microsoft.XMLDOM");
слепить
14 andrewks
 
03.10.11
10:19
(13) у тебя случаем нет рабочего примерчика с использованием xerces SAX?
15 Ёпрст
 
гуру
03.10.11
10:21
914
0 неа.
16 Ёпрст
 
гуру
03.10.11
10:22
тут же есть примеры, не ?
http://xerces.apache.org/xerces2-j/samples-sax.html
17 andrewks
 
03.10.11
10:30
(16) да знаю я. лень изучать, хотел чей-нибудь исходник прямо на 1с глянуть ;-)
не найду - буду читать
2 + 2 = 3.9999999999999999999999999999999...