Содержание

Автор статьи: Живой Ископаемый
исходник: 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>