![]() |
![]() |
|
XDTO по схеме XSD | ☑ | ||
---|---|---|---|---|
0
WhiteCroW
23.09.15
✎
16:02
|
Добрый день!
Помогите пожалуйста разобраться c XDTO. Есть задача выгрузить отчет по схеме XSD и загрузить его в стороннюю программу. В итоге запнулась на самом старте =( Вот код: СхемыXSD = Новый Массив; СхемыXSD.Добавить(ПутьКОбработке + "ОКУД0420001.xsd"); МояФабрикаXDTO = СоздатьФабрикуXDTO(СхемыXSD); ОТЧЕТType = МояФабрикаXDTO.Тип("http://www.it.ru/Schemas/Avior/ПУРЦБ", "ОКУД0420001_ОКУД0420001"); ОтчтеностьType = ОТЧЕТType.Свойства.Получить("отчетность").тип; ОтчетностьГодПредставленияType = ОтчтеностьType.Свойства.Получить("ГодПредставления").тип; СопроводительноеПисьмоType = ОТЧЕТType.Свойства.Получить("СопроводительноеПисьмо").тип; СопПисьмоОКАТОType = СопроводительноеПисьмоType.Свойства.Получить("ОКАТО").тип; ОТЧЕТType_ОбъектXDTO = МояФабрикаXDTO.Создать(ОТЧЕТType); ОТЧЕТType_ОбъектXDTO.отчетность = МояФабрикаXDTO.Создать(ОтчтеностьType); ОТЧЕТType_ОбъектXDTO.отчетность.ГодПредставления = МояФабрикаXDTO.Создать(ОтчетностьГодПредставленияType,"2015"); ОТЧЕТType_ОбъектXDTO.СопроводительноеПисьмо = МояФабрикаXDTO.Создать(СопроводительноеПисьмоType); ОТЧЕТType_ОбъектXDTO.СопроводительноеПисьмо.ОКАТО = МояФабрикаXDTO.Создать(СопПисьмоОКАТОType,"123123"); ИмяФайла = "" + ПутьКОбработке + объект.СсылкаНаРеализацию.Номер + ".xml"; ФайлXML = Новый ЗаписьXML(); ФайлXML.ОткрытьФайл(ИмяФайла); ФайлXML.ЗаписатьОбъявлениеXML(); МояФабрикаXDTO.ЗаписатьXML(ФайлXML, ОТЧЕТType_ОбъектXDTO); ФайлXML.Закрыть(); получается вот так: <?xml version="1.0" encoding="UTF-8"?> <ОКУД0420001_ОКУД0420001 xmlns="http://www.it.ru/Schemas/Avior/ПУРЦБ" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Отчетность> <ГодПредставления>2015</ГодПредставления> </Отчетность> <СопроводительноеПисьмо> <ОКАТО>123123</ОКАТО> </СопроводительноеПисьмо> </ОКУД0420001_ОКУД0420001> а должно быть вот так: <?xml version="1.0" encoding="UTF-8"?> <av:ОКУД0420001 appVersion="2.16.3" xmlns:xserializer="http://www.it.ru/Schemas/Avior/XSerializer" externalId="c51a2277-81fb-40da-9c56-08c4f9359ed2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:av="http://www.it.ru/Schemas/Avior/ПУРЦБ" xsi:schemaLocation="http://www.it.ru/Schemas/Avior/ПУРЦБ ПУРЦБ.xsd"> <av:Отчетность> <av:ГодПредставления>2015</av:ГодПредставления> </av:Отчетность> <av:СопроводительноеПисьмо> <av:ОКАТО>123123</av:ОКАТО> </av:СопроводительноеПисьмо> </av:ОКУД0420001> даже понять не могу, в какую сторону капнуть =( |
|||
1
H A D G E H O G s
23.09.15
✎
17:00
|
В сторону
ЗаписатьСоответствиеПространстваИмен() |
|||
2
Fragster
гуру
23.09.15
✎
17:05
|
(1) а я про это забыл :(
|
|||
3
Serginio1
23.09.15
✎
18:08
|
(1) Да вот только он записывает через фабрику
Записывает соответствие префикса и URI пространства имен. Данный метод должен вызываться после обращения к методу ЗаписьXML.ЗаписатьНачалоЭлемента и до записи вложенных элементов и текста элемента. Соответствие действует в рамках текущего элемента и всех вложенных. Запись.ЗаписатьНачалоЭлемента("apple"); Запись.ЗаписатьСоответствиеПространстваИмен("nsp", "http://metrics.org"); Запись.ЗаписатьАтрибут("weight", "http://metrics.org", "12.5"); Запись.ЗаписатьКонецЭлемента(); |
|||
4
Serginio1
23.09.15
✎
18:12
|
Хотя можно открыть Файл ЧтениеXML и добавить через ЗаписьXML
|
|||
5
Serginio1
23.09.15
✎
18:35
|
Можно попробовать
Стр=ЗаписьXML.Закрыть(); ЧтениеXML= новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(стр); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); Пока ЧтениеXML.Прочитать() Цикл ЗаписьXML.ЗаписатьТекущий(ЧтениеXML); Если ЧтениеXML.имя="ОКУД0420001" и ЧтениеXml.ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("av", "http://www.it.ru/Schemas/Avior/ПУРЦБ"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xserializer", "http://www.it.ru/Schemas/Avior/XSerializer"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("schemaLocation", "http://www.it.ru/Schemas/Avior/ПУРЦБ ПУРЦБ.xsd"); КонецЕсли; КонецЦикла; СтрокаXML = ЗаписьXML.Закрыть(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |