Имя: Пароль:
1C
1С v8
Выгрузка xml по определенной структуре.
0 rin
 
14.11.14
12:52
Добрый день! Помогите с задачкой. Работа с edi-провайдером и нужно,  чтоб на выходе (после выгрузки накладной) была именно такая структура xml-файла или схема будет правильней. Не получается. Опыта в xml нет. Не сталкивался.

<?xml version="1.0"?><Root>
       <Autorization Login="111111" Password="1111111111111111111"/>
        <Request ProcedureId="27"/>
        <Header>
            <MessageId>1</MessageId>
            <DocType>2</DocType>
            <DocNumber>111111111</DocNumber>
            <DocDate>2014.02.14</DocDate>
            <DeliveryDate/>
            <OrderId>11111111111</OrderId>
            <OrderDate>2014.02.13</OrderDate>
           <ContractorId>11111</ContractorId>
           <SupplierKPP>1111111111111</SupplierKPP>
            <BillNum>111111111111</BillNum>
            <ShopId>27</ShopId>
        </Header>
        <Detail>
            <MessageId>1</MessageId>
            <NumberLine>1</NumberLine>
            <Barcode>111111111111</Barcode>
            <ItemId>1111111</ItemId>
            <Description/>
            <DespatchQty>12</DespatchQty>
            <UnitId>111</UnitId>
            <VAT>0.18</VAT>
            <Price>1111.78</Price>
            <Cost>111.80</Cost>
            <Amount>111.60</Amount>
            <VatAmount/>
            <INNContractor>1111111111111</INNContractor>
            <KPPContractor>1111111111111111</KPPContractor>
            <CustomDeclaration/>
            <CountryOrigin/>
        </Detail>
    </Root>
1 Skylark
 
14.11.14
12:55
(0) Ну если по рабоче-крестьянски, то создай объект "Запись XML" и последовательно добавляй нужные узлы. Сохрани в файл, а потом добавь туда нужную шапку.

А если по-православному, то сделай схему и используй объект "Фабрика XDTO"
2 Wobland
 
14.11.14
13:01
Процедура ЗаписатьЭлемент(ЗаписьXML, ИмяЭлемента, ЗначениеЭлемента)
    ЗаписьXML.ЗаписатьНачалоЭлемента(ИмяЭлемента);
    ЗаписьXML.ЗаписатьТекст(Строка(ЗначениеЭлемента));
    ЗаписьXML.ЗаписатьКонецЭлемента();
КонецПроцедуры

        ЗаписьXML=Новый ЗаписьXML;
        Попытка
            ЗаписьXML.ОткрытьФайл(ИмяФайлаНаСервере, "windows-1251");
        Исключение
            Сообщить("Ошибка доступа к файлу "+ИмяФайлаНаСервере);
            Продолжить;
        КонецПопытки;
        ЗаписьXML.ЗаписатьОбъявлениеXML();
        ЗаписьXML.ЗаписатьНачалоЭлемента("Данные");
        //заголовок файла
        ЗаписатьЭлемент(ЗаписьXML, "Дистрибьютор", Организация.НаименованиеСокращенное);
        //шапка документа
        ВыборкаПоДокументам=ВыборкаПоСкладам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаПоДокументам.Следующий() Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("Документ");
            ЗаписатьЭлемент(ЗаписьXML, "ТипДокумента", ВыборкаПоДокументам.ТипДокумента);
            //строки документа
            Выборка=ВыборкаПоДокументам.Выбрать();
            Пока Выборка.Следующий() Цикл
                ЗаписьXML.ЗаписатьНачалоЭлемента("Строка");
                ЗаписатьЭлемент(ЗаписьXML, "ТоварКод", Выборка.ТоварКод);
                ЗаписьXML.ЗаписатьКонецЭлемента();
            КонецЦикла;
            ЗаписьXML.ЗаписатьКонецЭлемента();
        КонецЦикла;
        ЗаписьXML.ЗаписатьКонецЭлемента();    
        ЗаписьXML.Закрыть();
3 rin
 
14.11.14
13:14
Спасибо! Буду пробовать.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.