Автор статьи: Живой Ископаемый
исходник: http://kb.mista.ru/article.php?id=894
Сериализация ТаблицыЗначений в XML
В статье приведен простой способ для сериализации таблицы значений в XML-строку.
Проблема
В СП написано что таблица значений сериализуется в XML, но например такой код:
Сообщить(XMLСтрока(тзБуф));
Падает с криком:
Код обработки результата: Строка 3: Ошибка при вызове метода контекста (XMLСтрока): Ошибка преобразования данных XML
Решение
Решение предоставляет объект СериализаторXDTO и его метод ЗаписатьXML().
Вот такой код:
- СериализаторXDTO.txt
ТЗ = новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Кол1"); ТЗ.Колонки.Добавить("Кол2"); Стр = ТЗ.Добавить(); Стр.Кол1 = 1; Стр.Кол2 = "1"; Стр = ТЗ.Добавить(); Стр.Кол1 = 2; Стр.Кол2 = "2"; ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТЗ); СтрокаXML = ЗаписьXML.Закрыть(); Сообщить( СтрокаXML );
Выдает искомую xml-ину:
- СериализованнаяТаблицазначений.xml
<ValueTable xmlns="http://v8.1c.ru/8.1/data/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <column> <Name xsi:type="xs:string">Кол1</Name> <ValueType/> </column> <column> <Name xsi:type="xs:string">Кол2</Name> <ValueType/> </column> <row> <Value xsi:type="xs:decimal">1</Value> <Value xsi:type="xs:string">1</Value> </row> <row> <Value xsi:type="xs:decimal">2</Value> <Value xsi:type="xs:string">2</Value> </row> </ValueTable>