Закажите бесплатный расчет стоимости вашей задачи по 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.ЗаписатьКонецЭлемента(); // Конец элемента Организации

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

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

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

В 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.Закрыть();

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

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

Комментариев: 3 на “1С и XML — чтение и запись в примерах (8.2 и 8.3)
  1. ЧтениеXML.ОткрытьФайл(«d:\Temp\Test.XML»);
    //что-то читаем
    ЧтениеXML.Закрыть();//не забываем закрыть поток сознания

    Ответить

  2. ВыборкаДетальныеЗаписи как появилась?

    Ответить

    • это секрет, ответ только за бабло)

      Ответить

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

Ваш адрес email не будет опубликован.