ЗаписьXML, ЧтениеXML, ПостроительDOM.
Чтение и запись данных в (из) файл(а) и память(и).
Обработка содержит примеры работы с XML
Вот пример, как быстро прочитать файл, не зная структуры, потом в цикле выбрать все данные.
Чтение.УстановитьСтроку(Объект.Результат)
Используется для чтения данных из памяти (не из файла)
Часто применяется в веб сервисах.
&НаКлиенте
Процедура ЗаписатьX(Команда)
ЗаписатьXMLНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьX(Команда)
ПрочитатьXMLНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПрочитатьXMLНаСервере()
Объект.ДокСсылка = ИзXML(Объект.Результат);
КонецПроцедуры
&НаСервере
Процедура ЗаписатьXMLНаСервере()
Если ТипЗнч(объект.ДокСсылка) = Тип(«СправочникСсылка.Номенклатура») Тогда
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В ИЕРАРХИИ(&Ссылка)»;
Запрос.УстановитьПараметр(«Ссылка», объект.ДокСсылка);
Результат = Запрос.Выполнить().Выгрузить();
Объект.Результат = СписокВXML(Результат);
Иначе
Объект.Результат = ВXML(объект.ДокСсылка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВXML(ДокументСсылка)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, ДокументСсылка.ПолучитьОбъект());
Возврат ЗаписьXML.Закрыть();
КонецФункции
&НаСервере
Функция ИзXML(Стр)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Стр);
ДО = ПрочитатьXML(ЧтениеXML);
ДО.ОбменДанными.Загрузка = Истина;
ДО.Записать(РежимЗаписиДокумента.Запись);
Возврат ДО.ССылка;
КонецФункции
&НаСервере
Функция СписокВXML(ВхТЗ)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку(«UTF-8»);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, ПланыОбмена.Мобильные.НайтиПоКоду(«001»));
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(«xsi», «http://www.w3.org/2001/XMLSchema-instance»);
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(«v8», «http://v8.1c.ru/data»);
ТипДанныхУдаления = Тип(«УдалениеОбъекта»);
Для Каждого Стр Из ВхТЗ Цикл
ЗаписатьXML(ЗаписьXML, Стр.Ссылка.ПолучитьОбъект());
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Возврат ЗаписьXML.Закрыть();
КонецФункции
&НаСервере
Функция ТЗВXML()
КонецФункции
&НаКлиенте
Процедура ЗаписатьДОМ(Команда)
ЗаписатьДОМНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаписатьДОМНаСервере()
//Запись = Новый ЗаписьXML;
//Запись.ОткрытьФайл(«e:ases70dom.xml»);
//ЗаписьДом = Новый ЗаписьDOM;
//Дом = Новый ДокументDOM(«www.zmgmsc.ru/testuri», «Корневой»);
//Корневой = Дом.ЭлементДокумента;
//Элемент = Дом.СоздатьЭлемент(«Имя»);
//Элемент.ТекстовоеСодержимое = «Текст»;
//Элемент.УстановитьАтрибут(«Свойство», «Значение»);
//Корневой.ДобавитьДочерний(Элемент);
//ЗаписьДом.Записать(Дом, Запись);
//Запись.Закрыть();
Чтение = Новый ЧтениеXML;
//Чтение.ОткрытьФайл(«e:ases70dom.xml»);
Чтение.УстановитьСтроку(Объект.Результат);
ПостроительДом = Новый ПостроительDOM;
ДокументДом = ПостроительДом.Прочитать(Чтение);
Корневой = ДокументДом.ЭлементДокумента;
Дочерние = Корневой.ДочерниеУзлы;
Для Каждого Стр Из Дочерние Цикл
Сообщить(Стр.ИмяЭлемента + » » + Стр.ТекстовоеСодержимое);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СериализацияXDTO(Команда)
СериализацияXDTOНаСервере();
КонецПроцедуры
&НаСервере
Процедура СериализацияXDTOНаСервере()
ТекОБъект = Объект.ДокСсылка.ПолучитьОбъект();
ТекСерХДТО = Новый СериализаторXDTO(ФабрикаXDTO);
ЗаписьXML = Новый ЗаписьXML;
//Запись.ОткрытьФайл(«e:ases70dom.xml»);
ЗаписьXML.УстановитьСтроку(«UTF-8»);
ЗаписьXML.ЗаписатьОбъявлениеXML();
//ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(«xsi», «http://www.w3.org/2001/XMLSchema-instance»);
//ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(«v8», «http://v8.1c.ru/data»);
ТекСерХДТО.ЗаписатьXML(ЗаписьXML, ТекОБъект, НазначениеТипаXML.Явное, ФормаXML.Элемент);
Объект.Результат = ЗаписьXML.Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузкаСериализаторXDTO(Команда)
ЗагрузкаСериализаторXDTOНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗагрузкаСериализаторXDTOНаСервере()
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(Объект.Результат);
ТекСерХДТО = Новый СериализаторXDTO(ФабрикаXDTO);
ТекОБъект = ТекСерХДТО.ПрочитатьXML(Чтение);
ТекОБъект.Записать();
Объект.ДокСсылка = ТекОБъект.Ссылка;
КонецПроцедуры
Текст программы неплохо бы раскрасить, а также снабдить комментариями, что и для чего делается.
(1) mikhailovaew, Полностью согласен с вами! От себя скажу — как обработка рабочая?
Чем отличаются прикрепленные файлы? — «Сериализатор»
разные версии. берите тот, что больше весит
Не рвботает, выдаёт ошибки