0
morale
30.11.15
✎
20:46
|
Ребята помогите разобраться.
Есть Схема XDTO, импортирвоал в конфигурацию, дали из банка, пытаюсь выгрузить в XML. Проблема в установке Соответствие Пространства Имен, точнее я вообщеине понимаю как можно соответствия уставноить руками.
Код выгрузки такой:
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Истина);
ИмяФайла = "e-arve_"+Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy_hh.mm.ss")+".xml";
ПолноеИмяФайла = КаталогВременныхФайлов()+ИмяФайла;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПолноеИмяФайла, ПараметрыЗаписиXML);
ЗаписьXML.ЗаписатьОбъявлениеXML();
URIПространстваИмен = ";;
Фабрика = Новый ФабрикаXDTO(,ФабрикаXDTO.Пакеты);
Пакет = Фабрика.Пакеты.Получить(URIПространстваИмен);
ОбъектEInvoce = ПолучитьОбъектXDTO(Фабрика, Пакет, "E_Invoice");
// <-- Header
ОбъектHeader = ПолучитьОбъектXDTO(Фабрика, Пакет, "Header");
//ОбъектHeader.Test = "YES";
******* Далее все как надо, заполленям все свойства пакета ****
******* в конце такой код *******
Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектEInvoce, "E_Invoice", URIПространстваИмен);
ЗаписьXML.Закрыть();
В итоге файл выйгрзки выглядет так:
<?xml version="1.0" encoding="UTF-8"?>
-<E_Invoice xmlns:xs="; xmlns=";
-<Header>
<Date>2015-11-30</Date>
итд.....
Как изменить Соответствия, там надо отставить только
<E_Invoice xmlns:xsi=";
ТОЛЬКО xsi=..
Иначе банк не принимает.
Спасибо кто откликнется.
|
|
3
morale
30.11.15
✎
21:47
|
Пока выкрутился таким способом
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ПолноеИмяФайла);
ТекстовыйДокумент.ЗаменитьСтроку(2,"<E_Invoice xmlns:xsi="";);
ТекстовыйДокумент.Записать(ПолноеИмяФайла);
Но вопрос все равно открытый.) КАК WTF?
|
|
4
Записьдампа
30.11.15
✎
21:57
|
(3) Вы на пару с банком хотите очень странного.
1) Ты импортируешь схему в которой тип E_Invoice определен в пространстве "; (что само по себе весьма интересно) При выгрузке 1С честно делает тебе xml в котором в качестве пространства имен по умолчанию указано то, что ты просил - xmlns=";. И почему оно должно использовать префикс xsi?
2) Это соответствие только для чтения. Оно дает тебе возможность понять что у тебя определено на текущем уровне xml
Подозреваю, что тебе нужен невалидный xml. Единственный способ его получить - ручная обработка текста.
|
|