Имя: Пароль:
1C
1С v8
Выгрузка в 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";)

Это брать из файла?