Имя: Пароль:
1C
1С v8
выгрузка в XML
0 04347
 
28.06.16
09:11
Выгружаю документы в XML файл.
Вот отрывок из кода
        ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку("Windows-1251");
    ЗаписьXML.ЗаписатьОбъявлениеXML();

Файл выгружается,
заголовок <?xml version="1.0" encoding="WINDOWS-1251"?>
но не понятная кодировка
<acomp_name>Р?Рџ Козлов Рђ.РЎ.</acomp_name>

<acomp_addr>670000, Бурятия Респ, Улан-Удэ г, Дальненагорная ул, дом № 62</acomp_addr>

<car_type>ГАЗ 3302</car_type>


Если убрать "Windows-1251", то нормально

<acomp_name>ИП Иванов А.С.</acomp_name>

<acomp_addr>670000, Бурятия Респ, Улан-Удэ г, </acomp_addr>

<car_type>ГАЗ 3302</car_type>

<car_num>М 020 КН</car_num>

но тогда в заголовке нет  encoding="WINDOWS-1251"

<?xml version="1.0"?>

Как исправить, чтобы было и <?xml version="1.0" encoding="WINDOWS-1251"?> и кириллица читаема
1 Ёпрст
 
28.06.16
09:28
(0) открываешь потом xml чем хоть ?
Открой блокнотом, если нет спец-средств или вминяемого браузера, да смотри.
2 04347
 
28.06.16
09:41
(1)я файл могу открыть, посмотреть и потом сохранить

АдресФайлаДанных = РезультатВыполнения.ХарактеристикиФайла.АдресФайлаРеализации;
    
    Элементы.ПолучитьФайлДанных.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = 'Получить файл %1 (Документов %2 шт., ~%3 Кбайт)'"),
    ИмяФайла,
    Формат(РезультатВыполнения.ХарактеристикиФайла.КоличествоДокументов, "ЧН=0"),
    Формат(РезультатВыполнения.ХарактеристикиФайла.КоличествоСимволов/1024, "ЧДЦ=1; ЧН=0"));
    Элементы.ПолучитьФайлДанных.Доступность = Истина;
3 mehfk
 
28.06.16
09:43
Это 3,14здец
   ЗаписьXML.УстановитьСтроку("Windows-1251");
    ЗаписьXML.ЗаписатьОбъявлениеXML();
4 Мыш
 
28.06.16
09:47
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("c:\docs\data.xml", "Windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
5 04347
 
28.06.16
09:57
(3) а в чем 3.14? Пример обработки взят из БСП, называется _ДемоВыгрузкиДанныхВXMLФайлВБезопасномРежиме, и там тоже

        ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    ЗаписьXML.ЗаписатьОбъявлениеXML();
6 04347
 
28.06.16
09:59
(4) я не могу открыть файл по жесткому пути, файл  у меня формируется, но потом пользователь сам указывает по гиперссылке где будет сохранен файл
7 04347
 
28.06.16
10:02
(1) а зачем открывать блокнотом? Я и так вижу, что кодировка не та, и затем при загрузке так и грузится Р?Рџ Козлов Рђ.РЎ, а не Иванов
8 Мыш
 
28.06.16
10:02
(6) можешь сохранить во временный файл. А потом пользователю передать результат.
9 mehfk
 
28.06.16
10:10
(5) Покажи код, который у тебя идет дальше:

ТекстXML = ЗаписьXML.Закрыть();
10 mehfk
 
28.06.16
10:12
И покажи результат выполнения этого кода:

ЗаписьXML= Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("Windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Корень");
ЗаписьXML.ЗаписатьАтрибут("Атрибут", "Это я знаю и помню прекрасно");
ЗаписьXML.ЗаписатьКонецЭлемента();

ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст(ЗаписьXML.Закрыть());
ТекстовыйДокумент.Показать();
11 04347
 
28.06.16
10:12
(8) он у меня и записывается во временный файл с неправильной кириллицей


смотрю  в СП
Синтаксис:

УстановитьСтроку(<ТипКодировки>)
Параметры:

<ТипКодировки> (необязательный)

Тип: Строка.
В качестве типа кодировки может быть указано имя одной из возможных кодировок. Это никак не влияет на формируемую строку. Но если будет записано объявление XML-документа, то объявление будет содержать атрибут 'encoding', имеющий соответствующее значение. Если же в качестве параметра указана пустая строка или ничего не указано, то атрибут 'encoding' не будет присутствовать в объявлении XML-документа.
И пример оттуда
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
// Запись документа XML
12 04347
 
28.06.16
10:16
(9)

ЗаписьXML.ЗаписатьКонецЭлемента();
    
    // Закрываем и сохраняем записанный объект
    
    XMLСтрокой = ЗаписьXML.Закрыть();
    КоличествоСимволов = СтрДлина(XMLСтрокой);

    Сообщить("файл сформирован, нужно его сохранить!  ");
    Сообщить(ИмяФайла);
    
    Возврат Новый Структура("XMLСтрокой, КоличествоДокументов, КоличествоСимволов",  XMLСтрокой, КоличествоДокументов, КоличествоСимволов);

    
и по гиперссылке пользователь его просматривает и сохраняет туда, куда ему нужно
13 mehfk
 
28.06.16
10:18
Покажи код сохранения файла.
14 04347
 
28.06.16
11:12
(10)показать. Метод недоступен на сервере
15 mehfk
 
28.06.16
11:13
Это печально.
16 04347
 
28.06.16
11:14
(13)

// Закрываем и сохраняем записанный объект
    
    XMLСтрокой = ЗаписьXML.Закрыть();
    КоличествоСимволов = СтрДлина(XMLСтрокой);

    Сообщить("файл сформирован, нужно его сохранить!  ");
    Сообщить(ИмяФайла);
    
    Возврат Новый Структура("XMLСтрокой, КоличествоДокументов, КоличествоСимволов",  XMLСтрокой, КоличествоДокументов, КоличествоСимволов);
17 mehfk
 
28.06.16
11:15
Это не ответ на (13)
18 04347
 
28.06.16
11:17
(17) тогда не поняла, какой код?
19 mehfk
 
28.06.16
11:18
Где сохранение файла?
20 mehfk
 
28.06.16
11:21
В общем, пишите мой ник псина народ ру, подключусь удаленно.
21 04347
 
28.06.16
11:37
(20) отправила письмо
22 04347
 
28.06.16
12:07
(20) большое спасибо
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.