Выгружаем данные в XML файл из 1С 8.2 (с примерами)

XML

В отличии от выгрузки данных из 1С 8.2 в DBF формате, который является устаревшим, XML формат используется повсеместно. Обмен  данными между узлами РИБ, обмен между разрозненными конфигурациями, обмен с банк-клиентами и многое другое — все основано на использовании XML файлов. eXtensible Markup Language — специализированный язык программирования для разметки . Структура данного файла представляет собой теги, определяющие атрибуты и свойства объектов.

Как программно  выгрузить из 1С в XML файл? Рассмотрим на примере выгрузки реестра начислений в Сбербанк на основании ведомости в конфигурации «Бухгалтерия Предприятия 8.2»

1. Все начинается с инициализации класса «ЗаписьXML», предназначенного для организации последовательной записи документов и фрагментов XML.

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(Путь+«\»+«1548z.xml», «windows-1251»); //Открываем файл из переменной «Путь», указанной на форме обработки
    ЗаписьXML.ЗаписатьОбъявлениеXML(); // Так как мы создаем документ-XML ,а не фрагмент, то необходимо в начало его поместить объявление

 

2. Начинаем заполнять XML-документ. Указанная последовательность записей сделана исходя из образца файла для Клиент-Банка от Сбербанка. Ваша же последовательность   будет отличаться, но принцип один и тот же.

  ЗаписьXML.ЗаписатьНачалоЭлемента(«СчетаПК»); //записываем первый элемент

    ЗаписьXML.ЗаписатьАтрибут(«ДатаФормирования», Формат(ДатаПлатежка,«ДФ=yyyy-MM-dd»)); //указываем все атрибуты первого элемента в документе
    ЗаписьXML.ЗаписатьАтрибут(«НомерДоговора», НомерДоговора);
    ЗаписьXML.ЗаписатьАтрибут(«НаименованиеОрганизации», Организация.Наименование);
    ЗаписьXML.ЗаписатьАтрибут(«ИНН», Организация.ИНН+«\«+Организация.КПП);
    ЗаписьXML.ЗаписатьАтрибут(«РасчетныйСчетОрганизации», РасчетныйСчет);
    
     ЗаписьXML.ЗаписатьНачалоЭлемента(«ЗачислениеЗарплаты»); //записываем следующий элемент ….и.т.д.
  …

 

3. Пишем небольшой запрос для выборки данных
ЗапросВыплата = Новый Запрос;
   ЗапросВыплата.УстановитьПараметр(«ТекущийДокумент», Ведомость);
 
     ЗапросВыплата.Текст =
«ВЫБРАТЬ
|    ЛицевыеСчета.Банк,
|    ЛицевыеСчета.ФизЛицо КАК Сотрудник,
|    ЛицевыеСчета.НомерЛицевогоСчета,
|    ЛицевыеСчета.Организация
|ПОМЕСТИТЬ Лицевые
|ИЗ
|    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчета
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    Зарплата.Сумма + Зарплата.КомпенсацияЗаЗадержкуЗарплаты КАК Сумма,
|    Лицевые.НомерЛицевогоСчета,
|    Лицевые.Организация,
|    Зарплата.Физлицо
|ИЗ
|    Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК Зарплата
|        ЛЕВОЕ СОЕДИНЕНИЕ Лицевые КАК Лицевые
|        ПО Зарплата.Физлицо = Лицевые.Сотрудник
|            И Зарплата.Ссылка.Организация = Лицевые.Организация
|ГДЕ
|    Зарплата.Ссылка = &ТекущийДокумент»;

ТаблицаВыплата = ЗапросВыплата.Выполнить().Выгрузить();
   ТаблицаВыплата.Сортировать(«Физлицо возр»);

4.Перебираем таблицу значений, полученную из результата запроса
Для Каждого Стр Из ТаблицаВыплата Цикл
счетчик=счетчик+1;
        ПорядковыйНомер строка(счетчик);
        Сотрудник  Стр.Физлицо;
        НомерЛицевогоСчета = Стр.НомерЛицевогоСчета;
        Сумма  Стр.Сумма;

… и.т.д

5. В цикле, описанном выше заполняем новые элементы и атрибуты

ЗаписьXML.ЗаписатьНачалоЭлемента(«Сотрудник»);
    
    ЗаписьXML.ЗаписатьАтрибут(«Нпп», строка(счетчик));
         …  
    ЗаписьXML.ЗаписатьНачалоЭлемента(«ОтделениеБанка»);
    ЗаписьXML.ЗаписатьТекст(ОтделениеБанка);
    ЗаписьXML.ЗаписатьКонецЭлемента();
     
    ЗаписьXML.ЗаписатьНачалоЭлемента(«ЛицевойСчет»);
    ЗаписьXML.ЗаписатьТекст(НомерЛицевогоСчета);
    ЗаписьXML.ЗаписатьКонецЭлемента();

    ЗаписьXML.ЗаписатьНачалоЭлемента(«Сумма«);
    ЗаписьXML.ЗаписатьКонецЭлемента();
     …   
    ЗаписьXML.ЗаписатьКонецЭлемента();

6. После всех записей необходимо закрыть XML файл

ЗаписьXML.Закрыть();
   Сообщить(«Создан файл «+Путь+«\»+ «1548z.xml»);

7. На этом выгрузка завершена. Открываем получившийся файл и видим следующее содержание:

 

<?xml version=»1.0″ encoding=»windows-1251″ ?>
<СчетаПК ДатаФормирования=»2016-01-14″ НомерДоговора=»65432″ ДатаДоговора=»2015-01-12″ НаименованиеОрганизации=»Общество с ограниченной ответственностью ‘Восход'» ИНН=»61258795003″ РасчетныйСчетОрганизации=»4210649946421000006″ БИК=»004568451″ ИдПервичногоДокумента=»6f817478-b9ca-11e5-be3d-94de805e6f02″>
<ЗачислениеЗарплаты>
<Сотрудник Нпп=»1″>
<Фамилия>Иванов</Фамилия>
<Имя>Дмитрий</Имя>
<Отчество>Владимирович</Отчество>
<ОтделениеБанка>5221</ОтделениеБанка>
<ФилиалОтделенияБанка>7773</ФилиалОтделенияБанка>
<ЛицевойСчет>408…….802</ЛицевойСчет>
<Сумма>60900.00</Сумма>
</Сотрудник>
<Сотрудник Нпп=»2″>
<Фамилия>Петров</Фамилия>
<Имя>Иван</Имя>
<Отчество>Минеханович</Отчество>
<ОтделениеБанка>5221</ОтделениеБанка>
<ФилиалОтделенияБанка>7773</ФилиалОтделенияБанка>
<ЛицевойСчет>56468….41654</ЛицевойСчет>
<Сумма>10066.00</Сумма>
</Сотрудник>
<Сотрудник Нпп=»3″>
<Фамилия>Гончаров</Фамилия>
<Имя>Дмитрий</Имя>
<Отчество>Олегович</Отчество>
<ОтделениеБанка>5221</ОтделениеБанка>
<ФилиалОтделенияБанка>7773</ФилиалОтделенияБанка>
<ЛицевойСчет>750688…..49845</ЛицевойСчет>
<Сумма>33833.89</Сумма>
</Сотрудник>

 

 

Скачать бесплатную обработку Выгрузка ведомости в DBF и XML файлы

Поделитесь своим мнением

Свежие записи
Советы и помощь программиста в 1с © 2018 ·   Войти   · Наверх