Работаем с XML используя ЧтениеXML и ЗаписьXML Примеры кода для Записи данных в XML файл и его последующего Чтения:
Код 1C v 8.3 &НаКлиенте
Функция ВывестиЭлем(ХМЛ,Знач Смещ) ;
Рез= 1 ;
Попытка
Пока ХМЛ. Прочитать( ) Цикл
ТипУзла= ХМЛ. ТипУзла;
Если ( ТипУзла= ТипУзлаXML. НачалоЭлемента) Тогда
Смещ= Смещ+ " " ;
Сообщить( Смещ+ "Элемент " + ХМЛ. Имя+ ":" , СтатусСообщения. Важное) ;
Пока ( ХМЛ. ПрочитатьАтрибут( ) ) Цикл
Сообщить( Смещ+ "Атрибут: " + ХМЛ. Имя+ ", значение: <" + ХМЛ. Значение+ ">" ) ;
КонецЦикла ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. КонецЭлемента) Тогда
Смещ= Лев( Смещ, СтрДлина( Смещ) - 4 ) ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. Текст) Тогда
Сообщить( Смещ+ "Текст элемента: <" + ХМЛ. Значение+ ">" ) ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. СекцияCDATA) Тогда
Сообщить( Смещ+ "CDATA: <" + ХМЛ. Значение+ ">" ) ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. Комментарий) Тогда
Сообщить( Смещ+ "Комментарий: <" + ХМЛ. Значение+ ">" , СтатусСообщения. Информация) ;
Иначе
Сообщить( Смещ+ "Элемент " + ХМЛ. Имя+ ":" ) ;
Сообщить( Смещ+ "Тип: " + ХМЛ. Значение) ;
КонецЕсли ;
КонецЦикла ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
Рез= 0 ;
КонецПопытки ;
Возврат Рез;
КонецФункции
&НаКлиенте
Процедура ВыгрузитьХМЛ(ИмяФайла) Экспорт
ХМЛ= Новый ЗаписьXML;
ХМЛ. ОткрытьФайл( ИмяФайла, Новый ПараметрыЗаписиXML( "windows-1251" , , Ложь , Ложь ) ) ;
ХМЛ. ЗаписатьОбъявлениеXML( ) ;
ХМЛ. ЗаписатьНачалоЭлемента( "Файл" ) ;
ХМЛ. ЗаписатьАтрибут( "Атрибут_Файл_1" , "Здесь содержимое Атрибут_Файл_1" ) ;
ХМЛ. ЗаписатьТекст( "Здесь содержимое Файл" ) ;
ХМЛ. ЗаписатьКомментарий( "Далее следует содержимое файла" ) ;
ХМЛ. ЗаписатьНачалоЭлемента( "СодержимоеФайла" ) ;
ХМЛ. ЗаписатьАтрибут( "Атрибут_СодержимоеФайла_1" , "Здесь содержимое Атрибут_СодержимоеФайла_1" ) ;
ХМЛ. ЗаписатьТекст( "Здесь содержимое СодержимоеФайла" ) ;
ХМЛ. ЗаписатьСекциюCDATA( "Это секция CDATA" ) ;
ХМЛ. ЗаписатьКонецЭлемента( ) ;
ХМЛ. ЗаписатьКонецЭлемента( ) ;
ХМЛ. Закрыть( ) ;
ХМЛ= Неопределено ;
ХМЛ= Новый ЧтениеXML;
ХМЛ. ОткрытьФайл( ИмяФайла, Новый ПараметрыЧтенияXML( , , , ТипПроверкиXML. НетПроверки) ) ;
ВывестиЭлем( ХМЛ, "" ) ;
ХМЛ. Закрыть( ) ;
ХМЛ= Неопределено ;
КонецПроцедуры
Категория:
JSON, XML, TXT, CSV, DBF Пример выгрузки списка документов в XML файл Код 1C v 8.х Процедура ДействияФормыВыгрузить(Кнопка)
Запись= Новый ЗаписьXML;
Запись. ОткрытьФайл( "c:\document.xml" ) ;
Запись. ЗаписатьОбъявлениеXML( ) ;
Запись. ЗаписатьНачалоЭлемента( "Корневой" ) ;
Запись. ЗаписатьАтрибут( "Доумент" , "ПринятиеКУчтетуОС" ) ;
Запись. ЗаписатьКомментарий( "Краткая информация о принятых к учету ОС" ) ;
Выборка= Документы. ПринятиеКУчетуОС. Выбрать( НачДата, КонДата) ;
Пока Выборка. Следующий( ) Цикл
Запись. ЗаписатьНачалоЭлемента( "Элемент" ) ;
Запись. ЗаписатьАтрибут( "Номер" , Строка( Выборка. Номер) ) ;
Запись. ЗаписатьАтрибут( "Дата" , Строка( Выборка. Дата) ) ;
Запись. ЗаписатьАтрибут( "Организация" , Строка( Выборка. Организация) ) ;
Запись. ЗаписатьАтрибут( "Склад" , Строка( Выборка. Склад) ) ;
Запись. ЗаписатьАтрибут( "ПодразделениеОрганизации" , Строка( Выборка. ПодразделениеОрганизации) ) ;
Запись. ЗаписатьАтрибут( "МОЛ" , Строка( Выборка. МОЛБУ) ) ;
Запись. ЗаписатьАтрибут( "Оборудование" , Строка( Выборка. Номенклатура) ) ;
Запись. ЗаписатьАтрибут( "ОбъектСтроительства" , Строка( Выборка. ОбъектСтроительства) ) ;
Запись. ЗаписатьАтрибут( "ПервоначальнаяСтоимость" , Строка( Выборка. ПервоначальнаяСтоимостьНУ) ) ;
Запись. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
Запись. ЗаписатьКонецЭлемента( ) ;
Запись. Закрыть( ) ;
КонецПроцедуры
Категория:
JSON, XML, TXT, CSV, DBF Как сформировать XML-документ в строку? Требуется, чтобы запись XML-документа производилась не в файл, а в строку
Код 1C v 8.х Запись = Новый ЗаписьXML( ) ;
Запись. УстановитьСтроку( ) ;
Запись. ЗаписатьОбъявлениеXML( ) ;
Запись. ЗаписатьНачалоЭлемента( "Корневой" ) ;
Запись. ЗаписатьАтрибут( "Справочник" , "Номенклатура" ) ;
Запись. ЗаписатьКомментарий( "Краткая информация о номенклатуре" ) ;
Выборка = Справочники. Номенклатура. ВыбратьИерархически( ) ;
Пока Выборка. Следующий( ) Цикл
Если Выборка. ЭтоГруппа Тогда
Продолжить;
КонецЕсли ;
Запись. ЗаписатьНачалоЭлемента( "Элемент" ) ;
Запись. ЗаписатьАтрибут( "Код" , Строка( Выборка. Код) ) ;
Запись. ЗаписатьАтрибут( "Артикул" , Строка( Выборка. Артикул) ) ;
Запись. ЗаписатьТекст( Выборка. Наименование) ;
Запись. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
Запись. ЗаписатьКонецЭлемента( ) ;
Стр = Запись. Закрыть( ) ;
Сообщить( Стр) ;
Для вывода XML-документа в строку после создания объекта ЗаписьXML необходимо использовать метод УстановитьСтроку(). Только в этом случае метод Закрыть() вернет строку, которая будет содержать сформированный XML-документ.
еще примеры:
Код 1C v 8.х
Функция ОбъектВXML(ДокументОбъект) Экспорт
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML. УстановитьСтроку( ) ;
ЗаписатьXML( ЗаписьXML, ДокументОбъект) ;
Возврат ЗаписьXML. Закрыть( ) ;
КонецФункции
Функция ОбъектИзXML(Стр) Экспорт
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML. УстановитьСтроку( Стр) ;
Возврат ПрочитатьXML( ЧтениеXML) ;
КонецФункции
Категория:
JSON, XML, TXT, CSV, DBF Как можно сформировать XML-документ произвольной структуры? Используется модель последовательного доступа (работа осуществляется только с одним текущим узлом):
Код 1C v 8.х Запись = Новый ЗаписьXML;
Запись. ОткрытьФайл( ПутьКФайлу) ;
Запись. ЗаписатьОбъявлениеXML( ) ;
Запись. ЗаписатьНачалоЭлемента( "Корневой" ) ;
Запись. ЗаписатьАтрибут( "Справочник" , "Номенклатура" ) ;
Запись. ЗаписатьКомментарий( "Краткая информация о номенклатуре" ) ;
Выборка = Справочники. Номенклатура. ВыбратьИерархически( ) ;
Пока Выборка. Следующий( ) Цикл
Если Выборка. ЭтоГруппа Тогда
Продолжить;
КонецЕсли ;
Запись. ЗаписатьНачалоЭлемента( "Элемент" ) ;
Запись. ЗаписатьАтрибут( "Код" , Строка( Выборка. Код) ) ;
Запись. ЗаписатьАтрибут( "Артикул" , Строка( Выборка. Артикул) ) ;
Запись. ЗаписатьТекст( Выборка. Наименование) ;
Запись. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
Запись. ЗаписатьКонецЭлемента( ) ;
Запись. Закрыть( ) ;
В результате будет получен файл вида
Код <НачалоЭлемента
ИмяАтрибута = Значение ИмяАтрибута = Значение......>
Текст
<КонецЭлемента>
Создание XML-документа с помощью объекта ЗаписьXML производится путем помещения в строгой последовательности (иначе будет нарушена структура) «частей» узлов.
Категория:
JSON, XML, TXT, CSV, DBF