Имя: Пароль:
1C
1С v8
Вариант чтения файла XML
0 skupidom
 
20.02.18
11:10
Коллеги, привожу часть файла выгрузки XML, как оптиально его прочитать ?

<?xml version="1.0" encoding="UTF-8"?>
<ДокументыВыгрузки>
    <DocumentObject.ПоступлениеТоваровУслуг.Вручную>
        <Ref xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="DocumentRef.ПоступлениеТоваровУслуг">14eb2e4c-0ebf-11e7-90b4-0050568a2f35</Ref>
        <УИДДокумента xmlns:v8="http://v8.1c.ru/data"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="v8:UUID">14eb2e4c-0ebf-11e7-90b4-0050568a2f35</УИДДокумента>
        <Номер xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">00000006435</Номер>
        <Дата xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:dateTime">2017-02-28T23:59:59</Дата>
        <УИДОрганизация xmlns:v8="http://v8.1c.ru/data"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="v8:UUID">6f78daf1-f378-11de-9f34-001d7d0a0e6a</УИДОрганизация>
        <CatalogObject.Организации.Вручную>
            <Ref xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogRef.Организации">6f78daf1-f378-11de-9f34-001d7d0a0e6a</Ref>
            <Description xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string"> ЗАО</Description>
            <ИНН xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">773455935</ИНН>
            <КПП xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">773401001</КПП>
            <НаименованиеПолное xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">ЗАО ""</НаименованиеПолное>
            <СвидетельствоСерияНомер xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string"/>
            <СвидетельствоДатаВыдачи xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:dateTime">0002-01-01T00:00:00</СвидетельствоДатаВыдачи>
        </CatalogObject.Организации.Вручную>
        <CatalogObject.Валюты.Вручную>
            <Ref xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogRef.Валюты">b4a44b28-e8b1-11de-9f34-001d7d0a0e6a</Ref>
            <Description xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">руб.</Description>
            <DescriptionFull xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">Рос рубль</DescriptionFull>
        </CatalogObject.Валюты.Вручную>
        <ВидОперации xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="EnumRef.ВидыОперацийПоступлениеТоваровУслуг">ПокупкаКомиссия</ВидОперации>
        <ВидыПоступленияТоваров xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="EnumRef.ВидыПоступленияТоваров">НаСклад</ВидыПоступленияТоваров>
        <ДатаВходящегоДокумента xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:dateTime">2017-02-28T00:00:00</ДатаВходящегоДокумента>
        <Комментарий xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">Закладные детали (кронштейны)</Комментарий>
        <УИДКонтрагент xmlns:v8="http://v8.1c.ru/data"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="v8:UUID">50d36262-4726-11e6-af4c-0050568a2f35</УИДКонтрагент>
        <CatalogObject.Контрагенты.Вручную>
            <Ref xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogRef.Контрагенты">50d36262-4726-11e6-af4c-0050568a2f35</Ref>
            <Description xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">ТД ООО</Description>
            <ИНН xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">7743871794</ИНН>
            <КПП xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">774301001</КПП>
            <НаименованиеПолное xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">ООО Торговый дом </НаименованиеПолное>
        </CatalogObject.Контрагенты.Вручную>
        <УИДДоговорКонтрагента xmlns:v8="http://v8.1c.ru/data"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="v8:UUID">0d164ff0-0ec6-11e7-90b4-0050568a2f35</УИДДоговорКонтрагента>
        <CatalogObject.ДоговорыКонтрагентов.Вручную>
            <Ref xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogRef.ДоговорыКонтрагентов">0d164ff0-0ec6-11e7-90b4-0050568a2f35</Ref>
            <Description xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">Дог. 8 от 01.02.2017 + ДС1 от 28.04.2017</Description>
            <Номер xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string"/>
            <Дата xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:dateTime">0001-01-01T00:00:00</Дата>
            <CatalogObject.Валюты.Вручную>
                <Ref xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogRef.Валюты">b4a44b28-e8b1-11de-9f34-001d7d0a0e6a</Ref>
                <Description xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">руб.</Description>
                <DescriptionFull xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="xs:string">Российский рубль</DescriptionFull>
            </CatalogObject.Валюты.Вручную>
        </CatalogObject.ДоговорыКонтрагентов.Вручную>
1 бомболюк
 
20.02.18
11:46
ВозможностьЧтенияXML, ПрочитатьXML
2 Адинэснег
 
20.02.18
12:02
если конфы одинаковые - десериализация
если разные - в построитель дом
3 skupidom
 
20.02.18
12:13
построитель дом - можете привести оптимальный приер для данного случая чтения xml файла ?
4 Вафель
 
20.02.18
12:29
ФабрикаXDTO.Прочиать()
5 skupidom
 
20.02.18
13:16
Если требуется выгрузить структуру документа + структуры всех его реквизитов: для справочников их реквизиты как тогда?
6 skupidom
 
20.02.18
13:43
если у меня выгружено без исп.XDTO, а при чтении я пытаюсь исп.ФабрикаXDTO, то ошибка "Невоожно открыть файл обена данныи".
пример записи XML:
// Записываем начало элемента XML.
    ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПоступлениеТоваровУслуг.Вручную");
                  
    ЗаписатьXML(ЗаписьXML, Данные.Ссылка, "Ref", НазначениеТипаXML.Явное);
    
    ЗаписатьXML(ЗаписьXML, Данные.Ссылка.УникальныйИдентификатор(),"УИДДокумента", НазначениеТипаXML.Явное);
    
    ЗаписатьXML(ЗаписьXML, Данные.Номер, "Номер", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Данные.Дата, "Дата", НазначениеТипаXML.Явное);
    
    ЗаписатьXML(ЗаписьXML,Данные.Организация.УникальныйИдентификатор(),"УИДОрганизация", НазначениеТипаXML.Явное);
    ЗаписатьXMLОрганизации(ЗаписьXML,Данные.Организация);
    
    ЗаписатьXMLВалюты(ЗаписьXML, Данные.ВалютаДокумента);

    ЗаписатьXML(ЗаписьXML, Данные.ВидОперации, "ВидОперации", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Данные.ВидПоступления, "ВидыПоступленияТоваров", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Данные.ДатаВходящегоДокумента, "ДатаВходящегоДокумента", НазначениеТипаXML.Явное);
    
    ЗаписатьXML(ЗаписьXML, Данные.Комментарий, "Комментарий", НазначениеТипаXML.Явное);
    
    ЗаписатьXML(ЗаписьXML,Данные.Контрагент.УникальныйИдентификатор(),"УИДКонтрагент", НазначениеТипаXML.Явное);
    ЗаписатьXMLКонтрагенты(ЗаписьXML, Данные.Контрагент);
    
    ЗаписатьXML(ЗаписьXML,Данные.ДоговорКонтрагента.УникальныйИдентификатор(),"УИДДоговорКонтрагента", НазначениеТипаXML.Явное);
    ЗаписатьXMLДоговорыКонтрагентов(ЗаписьXML,Данные.ДоговорКонтрагента);     
    
    ЗаписатьXML(ЗаписьXML,Данные.ПодразделениеОрганизации.УникальныйИдентификатор(),"УИДПодразделениеОрганизации",НазначениеТипаXML.Явное);
    ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, Данные.ПодразделениеОрганизации,"ПодразделенияОрганизаций");
    
    ЗаписатьXML(ЗаписьXML, Данные.СуммаДокумента, "СуммаДокумента", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, "№ " + ОбщегоНазначения.ПолучитьНомерНаПечать(Данные.Ссылка) + " от " + Строка(Формат(Данные.Дата, "ДЛФ=Д")), "Представление", НазначениеТипаXML.Явное);    
        
    ТЧ=Данные.Оборудование.Выгрузить();
    ТЧ.Сортировать("Заказ,Номенклатура");
    ПредЗаказ="";
    
    Для Каждого СтрокаТЧ Из ТЧ Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentTabularSectionRow.ПоступлениеТоваровУслуг.Оборудование.Вручную");
        ЗаписатьXMLСправочникСсылкаИНаименование(ЗаписьXML, СтрокаТЧ.ЕдиницаИзмерения, "ЕдиницыИзмерения");
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Количество, "Количество", НазначениеТипаXML.Явное);
        
        ЗаписатьXML(ЗаписьXML,СтрокаТЧ.Номенклатура.УникальныйИдентификатор(),"УИДНоменклатура",НазначениеТипаXML.Явное);
        ЗаписатьXMLНоменклатура(ЗаписьXML, СтрокаТЧ.Номенклатура);
        
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Сумма, "Сумма", НазначениеТипаXML.Явное);    
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Цена, "Цена", НазначениеТипаXML.Явное);
        
        ЗаписатьXML(ЗаписьXML,СтрокаТЧ.ВидРабот.УникальныйИдентификатор(),"УИДВидРабот",НазначениеТипаXML.Явное);
        ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, СтрокаТЧ.ВидРабот,"ВидыРабот");
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    
    ТЧ=Данные.Товары.Выгрузить();
    ТЧ.Сортировать("Заказ,Номенклатура");
    Для Каждого СтрокаТЧ Из ТЧ Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentTabularSectionRow.ПоступлениеТоваровУслуг.Товары.Вручную");
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.ЕдиницаИзмерения.УникальныйИдентификатор(),"УИДЕдиницыИзмерения");
        ЗаписатьXMLСправочникСсылкаИНаименование(ЗаписьXML, СтрокаТЧ.ЕдиницаИзмерения, "ЕдиницыИзмерения");
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Количество, "Количество", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML,СтрокаТЧ.Номенклатура.УникальныйИдентификатор(),"УИДНоменклатура",НазначениеТипаXML.Явное);
        ЗаписатьXMLНоменклатура(ЗаписьXML, СтрокаТЧ.Номенклатура);
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Сумма, "Сумма", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Цена, "Цена", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML,СтрокаТЧ.ВидРабот.УникальныйИдентификатор(),"УИДВидРабот",НазначениеТипаXML.Явное);
        ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, СтрокаТЧ.ВидРабот, "ВидыРабот");
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    
    ТЧ=Данные.Услуги.Выгрузить();
    ТЧ.Сортировать("Заказ,Номенклатура");
    Для Каждого СтрокаТЧ Из Данные.Услуги Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentTabularSectionRow.ПоступлениеТоваровУслуг.Услуги.Вручную");
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Количество, "Количество", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Сумма, "Сумма", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML,СтрокаТЧ.Номенклатура.УникальныйИдентификатор(),"УИДНоменклатура",НазначениеТипаXML.Явное);
        ЗаписатьXMLНоменклатура(ЗаписьXML, СтрокаТЧ.Номенклатура);
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Цена, "Цена", НазначениеТипаXML.Явное);
        
        ЗаписатьXML(ЗаписьXML,СтрокаТЧ.ВидРабот.УникальныйИдентификатор(),"УИДВидРабот",НазначениеТипаXML.Явное);
        ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, СтрокаТЧ.ВидРабот, "ВидыРабот");
        
        ЗаписатьXML(ЗаписьXML,СтрокаТЧ.СтатьяЗатрат.УникальныйИдентификатор(),"УИДСтатьиЗатрат",НазначениеТипаXML.Явное);
        ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, СтрокаТЧ.СтатьяЗатрат, "СтатьиЗатрат");
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    
    // Записываем конец элемента.
    ЗаписьXML.ЗаписатьКонецЭлемента();
7 skupidom
 
20.02.18
13:44
Такая запись XML не удобна,а вот с чтение при этом проблема
8 skupidom
 
20.02.18
13:51
Такая запись XML мне удобна,
а вот с чтение при этом проблема
2 + 2 = 3.9999999999999999999999999999999...