Имя: Пароль:
1C
1С v8
Сериализация метаданных в XML
0 Benn
 
18.07.17
12:03
Добрый день. Есть необходимость сериализовать объект в XML файл с последующим созданием из XMЛ БЕЗ описания схемы.
1 DexterMorgan
 
18.07.17
12:08
СериализаторXDTO (XDTOSerializer)
Свойства:

Фабрика (Factory)

Методы:

XMLЗначение (XMLValue)
XMLСтрока (XMLString)
XMLТип (XMLType)
XMLТипЗнч (XMLTypeOf)
ВозможностьЧтенияXML (CanReadXML)
ЗаписатьXDTO (WriteXDTO)
ЗаписатьXML (WriteXML)
ИзXMLТипа (FromXMLType)
ПолучитьXMLТип (GetXMLType)
ПрочитатьXDTO (ReadXDTO)
ПрочитатьXML (ReadXML)

Конструкторы:

На основании XDTO

Описание:

Сериализатор значений платформы 1С:Предприятие 8 в XML на основе XDTO.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
См. также:
2 Benn
 
18.07.17
12:09
Например при передачи в сериализатор ссылки на справочник номенклатуры в XML файле я получу теги всех своих реквизитов с данными в виде дерева.
3 Рэйв
 
18.07.17
12:09
//----------Сериализация

Функция XML(Данные)
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Данные);
    Возврат ЗаписьXML.Закрыть();
КонецФункции


    
//------Десериализация

Функция ДанныеИзXML(Стр)
    ЧтениеXML = Новый ЧтениеXML();
    ЧтениеXML.УстановитьСтроку(Стр);
    Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
КонецФункции
4 Рэйв
 
18.07.17
12:14
Еще можно так:

//------
// Выгрузить в файл xml.
ЗаписьXML=Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл("c:\doc.xml");
ЗаписьXML.ЗаписатьНачалоЭлемента("Root");

// Получить объект по ссылке.
ВыгружаемыйОбъект=Документ.ПолучитьОбъект();

// С помощью средств сериализации записать объект в файл.
ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);

ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();

ЧтениеXML=Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл("c:\doc.xml");

// Текущим становится элемент Root.
ЧтениеXML.Прочитать();

// Текущим становится элемент с документом.
ЧтениеXML.Прочитать();

// Проверить сможет ли с данным значением "справиться"
// система сериализации в данной базе.
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда

    // Получить ДокументОбъект.РеализацияТоваровУслуг
    ЗагружаемыйОбъект=ПрочитатьXML(ЧтениеXML);
    
    ЗагружаемыйОбъект.Записать();
КонецЕсли;

ЧтениеXML.Закрыть();
(С)Габец
5 Benn
 
18.07.17
12:21
(4) Все, спасибо. Ответ на мой вопрос был в "ПолучитьОбъект()". Я ссылку передавал в сериализатор - хмл записывался с описанием ссылки. При передачи объекта - полная структура объекта.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс