|
Выгрузка XML Соответствие Пространства Имен | ☑ | ||
---|---|---|---|---|
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ПространстваИмен = "http://www.w3.org/2001/XMLSchema-instance"; Фабрика = Новый Фабрика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="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema-instance"> -<Header> <Date>2015-11-30</Date> итд..... Как изменить Соответствия, там надо отставить только <E_Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ТОЛЬКО xsi=.. Иначе банк не принимает. Спасибо кто откликнется. |
|||
1
DrShad
30.11.15
✎
21:09
|
О да, в банках тот еще бардак при чтении XML
|
|||
2
morale
30.11.15
✎
21:16
|
(1) Да любые типовые берешь, нормально формирует Соответствия. Не могу понять в чем проблема.
|
|||
3
morale
30.11.15
✎
21:47
|
Пока выкрутился таким способом
ТекстовыйДокумент = Новый ТекстовыйДокумент(); ТекстовыйДокумент.Прочитать(ПолноеИмяФайла); ТекстовыйДокумент.ЗаменитьСтроку(2,"<E_Invoice xmlns:xsi=""http://www.w3.org/2001/XMLSchema"">"); ТекстовыйДокумент.Записать(ПолноеИмяФайла); Но вопрос все равно открытый.) КАК WTF? |
|||
4
Записьдампа
30.11.15
✎
21:57
|
(3) Вы на пару с банком хотите очень странного.
1) Ты импортируешь схему в которой тип E_Invoice определен в пространстве "http://www.w3.org/2001/XMLSchema-instance" (что само по себе весьма интересно) При выгрузке 1С честно делает тебе xml в котором в качестве пространства имен по умолчанию указано то, что ты просил - xmlns="http://www.w3.org/2001/XMLSchema-instance". И почему оно должно использовать префикс xsi? 2) Это соответствие только для чтения. Оно дает тебе возможность понять что у тебя определено на текущем уровне xml Подозреваю, что тебе нужен невалидный xml. Единственный способ его получить - ручная обработка текста. |
|||
5
Записьдампа
30.11.15
✎
21:59
|
И вдогонку:
Фабрика = Новый ФабрикаXDTO(,ФабрикаXDTO.Пакеты);
Это зачем? Особенно первая строка? |
|||
6
DrShad
30.11.15
✎
23:31
|
(3) самое прикольное, что в таком варианте 1С добавляет еще 3 байта к файлу :)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |