Имя: Пароль:
1C
1C 7.7
v7: OpenXML.dll от x-romix - Кодировка
0 Palll
 
12.08.15
15:32
Как создать xml файл в кодировке UTF-8 используя OpenXML.dll?
1 Ёпрст
 
12.08.15
15:37
задать это в параметрах вестимо
2 romix
 
12.08.15
15:37
Вот это, кажется: КодировкаПоУмолчанию
3 Palll
 
12.08.15
15:41
(2) пишу

xml.КодировкаПоУмолчанию = "UTF-8";

xml создается в windows-1251.
4 romix
 
12.08.15
15:45
(3) И правда - нету. В 7-ке было неактуально, в принципе все программы читают кодировку 1251. Она в 2 раза компактнее. :-)
5 Palll
 
12.08.15
15:48
(4) Ну, это не моя прихоть. Нужна xml именно в UTF-8. Какую тогда внешнюю компоненту посоветуете? Стандартный парсер не подходит из-за невозможности создания объемного файла.
6 romix
 
12.08.15
15:49
У меня там еще есть перекодировщик (запускается без черного консольного окошка).
UTF8_1251.rar (27K) - программа для перекодировки между UTF8 и 1251. http://x-romix.narod.ru/
(перекодирует в обоих направлениях, там их две по-моему).

Чтение-запись происходит построчно, т.е. память есть не должно.
7 Palll
 
12.08.15
15:52
(6) Перекодировщик я видел. Xml будет автоматом отправляться на почту и перекодировать его каждый раз руками не вариант.
8 romix
 
12.08.15
15:52
А хм первая строка же будет неправильная.

Я предлагаю забить и выдавать в этой кодировке 1251, кому там еще она не подходит то. Объемный файл будет в 2 раза менее объемным.
9 romix
 
12.08.15
15:53
Все парсеры же читают 1251, Микрософт точно должна читать.
10 Boroda
 
12.08.15
15:53
Вот, нашел у себя одну обработку:

Анализатор = СоздатьОбъект("AddIn.XMLParser");
мЗаписьXML = Анализатор.СоздатьПоследовательноЗаписываемыйДокумент();
    
мЗаписьXML.ИмяФайла = ИмяФайла;
мЗаписьXML.Кодировка = "UTF-8";
мЗаписьXML.ОткрытьЭлемент("INVOICE");//INVOICE
11 Palll
 
12.08.15
15:55
(9) Я это понимаю. Кодировка UTF-8 требование ТЗ.
12 Boroda
 
12.08.15
15:59
Вот еще в просторах интернета нашел: "B_UTF8_3_0.ert"
13 romix
 
12.08.15
15:59
(11) Да проигнорировать наверное можно, тем более что в 1С 7.7 кодировка внутри самой системы 8-битная, UTF ничего нового не добавляет.

Еще есть вариант - если какая-то скриптовая компонента (FileSystemObject) позволяет писать текст UTF-8, то ей можно прямо руками создавать теги (они легко создаются) вот по этому образцу:

Книга знаний: Чтение и запись текстовых файлов XML средствами 1С:Предприятие 7.7
14 romix
 
12.08.15
16:00
Кусок кода начиная со слов

"А теперь приведу пример записи того же самого файла XML."
15 romix
 
12.08.15
16:01
Память грузить не должно, т.к. пишет строки построчно.
16 igork1966
 
12.08.15
16:01
(11) Требование к кодировке файла  XML  выглядят странно.
17 Palll
 
12.08.15
16:04
(10),(13) Буду пробовать.
(16) В этом ТЗ много странных требований, можно конечно подсунуть 1251 и посмотреть что будет .
18 igork1966
 
12.08.15
16:08
(17) Случайно нет еще: определенный порядок атрибутов... контрольные суммы из содержимого атрибутов (полагаясь на порядок)? => вывод:
Допустили альтернативно разумного до составления ТЗ?
19 Palll
 
12.08.15
16:13
(18) Есть что-то похожее, особенно удивила система проверки остатков по формуле "НачОстаток + Закупка - Продажа = КонОстаток"
20 Palll
 
12.08.15
16:17
(13) В примере есть Процедура xml_ЗаписатьАтрибут, но нет процедуры для присвоения значения атрибуту.
21 igork1966
 
12.08.15
16:20
(20) А зачем?  ;-0
22 Palll
 
12.08.15
16:22
(21) Вот такую конструкцию сделать
<attribute name="distribId">ЦБ00100</attribute>
23 igork1966
 
12.08.15
16:25
(22) Это не "присвоения значения атрибуту"
Напиши сам, по аналогии это же просто
24 Serginio1
 
12.08.15
16:28
25 Palll
 
12.08.15
16:29
(23) Лень матушка, быстрее воспользоваться готовым механизмом. Сейчас попробую СоздатьПоследовательноЗаписываемыйДокумент().