Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

1С и XML — чтение и запись в примерах (8.2 и 8.3)

Рассмотрим возможности 1С 8.3 работы с XML.

XML – это расширяемый язык разметки. В 1С широко применяется для обмена данными между конфигурациями, а так же между другими внешними источниками данных с помощью данного механизма.

Рассмотрим два варианта работы с XML: средствами внутреннего языка и средствами внутреннего языка с использованием XDTO пакетов.

Чтение файла XML средствами внутреннего языка 1С

Создадим новый объект: ЧтениеXML. Он позволяет читать сообщения. Далее привожу простейший код, показывающий принцип чтения и разборки XML файла. Пояснения буду приводить в виде комментариев, чтобы не разрывать код на куски, и его можно было скопировать для дальнейшего использования.

ЧтениеXML = Новый ЧтениеXML;

ЧтениеXML.ОткрытьФайл("d:\Temp\Test.XML");  //Открываем файл

Пока ЧтениеXML.Прочитать() Цикл  //Цикл по структуре

Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда  //Определяем начало элемента

Пока ЧтениеXML.ПрочитатьАтрибут() Цикл

//Внутри элемента считываем атрибуты

КонецЦикла;

ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда

//Если это текст, читаем текст

ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.КонецЭлемента Тогда

//Определяем дальнейшие действия

КонецЕсли ;

КонецЦикла;

Таким образом, зная структуру файла, можно его разобрать «по полочкам» в программе 1С.

Запись данных из 1C в XML

Также создадим объект ЗаписьXML.

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.ОткрытьФайл("d:\Temp\Test.XML", "UTF-8"); //Открываем файл для записи, указываем кодировку

ЗаписьXML.ЗаписатьОбъявлениеXML();  // Записываем объявление XML

ЗаписьXML.ЗаписатьНачалоЭлемента("Организации"); // Начало элемента Организации

Выборка = Справочники.Организации.Выбрать();

Пока Выборка.Следующий() Цикл  // Начинаем выгружать организации

ЗаписьXML.ЗаписатьНачалоЭлемента("Организация"); // Начало элемента Организация

ЗаписьXML.ЗаписатьАтрибут("Код",Строка(Выборка.Код));

ЗаписьXML.ЗаписатьАтрибут("Наименование",Строка(Выборка.Наименование));

ЗаписьXML.ЗаписатьКонецЭлемента(); // Конец элемента Организация

КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента(); // Конец элемента Организации

Получите 267 видеоуроков по 1С бесплатно:

Таким образом мы выгрузим код и наименование всех организаций из справочника 1С «Организации».

Выгрузка из 1C в XML с помощью XDTO-пакетов

В 1С предприятии существует такой объект метаданных, как XDTO-пакеты. Они служат для обмена данными в формате XML.

XDTO-пакет позволяет создать структуру, по которой потом пойдет выгрузка данных. Покажу пример такой структуры:

структура xml файла

Теперь, определив структуру (ее, кстати, можно загрузить из файла), мы можем смело сформировать файл:

МойXML = Новый ЗаписьXML;

ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);

МойXML.ОткрытьФайл("d:\Temp\Test.XML",  ПараметрыЗаписиXML);

МойXML.ЗаписатьОбъявлениеXML();

ТипОбъектаАктивыВСистеме = ФабрикаXDTO.Тип("www.primer.ru/assets", "АктивыВСистеме");

ОбъектАктивыВСистеме = ФабрикаXDTO.Создать(ТипОбъектаАктивыВСистеме);

ОбъектАктивыВСистеме.ДатаВыгрузки = ТекущаяДата();

ТипОбъектаАктивы = ФабрикаXDTO.Тип("www.primer.ru/assets", "Активы");

ОбъектАктивы = ФабрикаXDTO.Создать(ТипОбъектаАктивы);

ОбъектАктивыВСистеме.Добавить(ФормаXML.Элемент, "www.primer.ru/assets", "Активы", ОбъектАктивы);

ТипОбъектаАктив = ФабрикаXDTO.Тип("www.primer.ru/assets", "Актив");

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ОбъектАктив = ФабрикаXDTO.Создать(ТипОбъектаАктив);

ОбъектАктив.Наименование = ВыборкаДетальныеЗаписи.Наименование;

ОбъектАктив.ISIN = ВыборкаДетальныеЗаписи.ISIN;

ОбъектАктивы.Актив.Добавить(ОбъектАктив);

КонецЦикла;

ФабрикаXDTO.ЗаписатьXML(МойXML, ОбъектАктивыВСистеме);

МойXML.Закрыть();

Вот определив заранее схему, можно создать файл любой сложности.

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

Задайте ВОПРОС на нашем форуме 1С! ››

СПРОСИТЕ в комментариях!

Добавить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*