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("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. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Saifer:
ЧтениеXML.ОткрытьФайл(«d:\Temp\Test.XML»);
//что-то читаем
ЧтениеXML.Закрыть();//не забываем закрыть поток сознания
1С:
ВыборкаДетальныеЗаписи как появилась?
Аноним:
это секрет, ответ только за бабло)