|
Выгрузка в xml файл по схеме | ☑ | ||
---|---|---|---|---|
0
MistaEr
26.06.17
✎
10:59
|
Здравствуйте!
КаталогФайловСоСхемами = "C:\shem"; МассивСхемXSD = Новый Массив; МассивСхемXSD.Добавить("C:\shem\CYSEC_DATTRA2.1 MAIN XML SCHEME.xsd"); ФабрикаXDTO = СоздатьФабрикуXDTO(МассивСхемXSD); Дальше вот не знаю как "заполнять" данные. дайте пожалуйста направление. |
|||
1
RomaH
naïve
26.06.17
✎
11:01
|
package = ОбъектыXDTOКлиентСервер.ПолучитьСтруктуруТиповXDTOПакета(ФабрикаXDTO.Тип(ИмяПакета,"package"));
КорневойРаздел = ФабрикаXDTO.Создать(package.Тип); // Возвращает структуру со всеми типами: // каждое имя структуры содержит обязательное поле Тип // и необязательное поле с подчинённой структурой следующего типа // например: package.Тип - тип корневого элемента // package.body - подчинённый элемент // package.body.Тип - тип элемента body // package.body.bill - подчинённый элемент // package.body.bill.Тип - тип элемента bill Функция ПолучитьСтруктуруТиповXDTOПакета(ТекущийЭлемент) Экспорт ТипЭлемента = Новый Структура("Тип", ТекущийЭлемент); Для каждого Свойство из ТекущийЭлемент.Свойства Цикл Если Свойство.Форма = ФормаXML.Элемент Тогда ТипЭлемента.Вставить(Свойство.Имя, ПолучитьСтруктуруТиповXDTOПакета(Свойство.Тип)); КонецЕсли; КонецЦикла; Возврат ТипЭлемента; КонецФункции |
|||
2
RomaH
naïve
26.06.17
✎
11:03
|
КорневойРаздел.body = ЗаполнитьДокумент(РезультатЗапроса, package.body,ПериодОтчета,ИмяПакета);
Функция ЗаполнитьДокумент(РезультатЗапроса, СтруктураТипа,ПериодОтчета,ИмяПакета) //Имя файла //1ОГРН 14кпп 2325 28 // 26 29 // 27 //104760041291476040100117113CE ТекущийУзел = ФабрикаXDTO.Создать(СтруктураТипа.Тип); СтруктураДанных = ОбъектыXDTOКлиентСервер.СоздатьСтруктуруПриемникДляОбъектаХДТО(ТекущийУзел); Если СтрНайти(ИмяПакета,"607") Тогда СтруктураДанных.version = "6.07"; КонецЕсли; СтруктураДанных.protocol = "Reestr"; СтруктураДанных.creator = "МИС v 0.1"; СтруктураДанных.telcreator = "4852427050(110)"; СтруктураДанных.ogrn_mo = "1047600412914";//"1047600412914"); СтруктураДанных.kpp_mo = "760401001";//"760401001"); //СтруктураДанных.ogrn_mo = Лев(ОрганизацияНУЗ.ОГРН,13);//"1047600412914"); //СтруктураДанных.kpp_mo = Лев(ОрганизацияНУЗ.КПП,9);//"760401001"); //СтруктураДанных.year = СтрЗаменить(Год(ПериодОтчета)," ",""); СтруктураДанных.year = XMLСтрока(Год(ПериодОтчета)); СтруктураДанных.quarter = Цел(Месяц(ПериодОтчета)/3)+1; СтруктураДанных.stage = "1"; ОбъектыXDTOКлиентСервер.ЗаполнитьОбъектХДТО(ТекущийУзел,СтруктураДанных); ТекущийУзел.patients = ЗаполнитьПациентов(РезультатЗапроса, СтруктураТипа.patients); Возврат ТекущийУзел; КонецФункции |
|||
3
MistaEr
26.06.17
✎
11:09
|
(1) Не знаю где взять ИмяПакета
|
|||
4
RomaH
naïve
26.06.17
✎
11:18
|
Функция ИмяПакетаXDTO(Знач ПериодОтчета)
ИмяПакета = "http://tfoms.yar.ru/BILL/607_d"; Если ПериодОтчета >= '20170101' Тогда ИмяПакета = "http://tfoms.yar.ru/BILL/607_d"; КонецЕсли; Возврат ИмяПакета; КонецФункции единственное у меня это встроенный пакет ... но по файлам так же должно работать |
|||
5
MistaEr
26.06.17
✎
11:24
|
У меня что то такое?
НоваяФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","TradingTimeCompleteDescriptionType") Это брать из файла? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |