Имя: Пароль:
1C
1С v8
Сериализатор.
0 Фулиган
 
26.01.12
17:35
Имеем: 1С 8.2.15.289. Пакет ХТДО где описан 2 реквизита справочника.
Вопрос может ли работать сериализатор с пользовательскими типами. Смысл выгружать только нужные реквизиты.
ПыСы. НЕ предлагать: Фабрику.Тип() -> Фабрику.Создать() -> ЗаполнитьЗначениеСвойств() -> Фабрику.ЗаписатьXML() - пройденный этап и прекрасно работает.
Хочется Сериализацию. Т.к. светит передачу кучу ТЧ, рекурсивные вызовы.


ИмяФайла = "D:\тест.xml";
МойXML = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
МойXML.ЗаписатьОбъявлениеXML();
ФайлыXSD = Новый Массив();
ФайлыXSD.Добавить("D:\тест.xsd");
МояФабрикаXDTO    = СоздатьФабрикуXDTO(ФайлыXSD);
СправочникТип        = МояФабрикаXDTO.Тип("http://test.ru/test", "CatalogObject.Номенклатура"); //в схеме есть такой тип в нем определено 2 свойства
СправочникТип        = МояФабрикаXDTO.Тип("http://test.ru/test", "СправочникОбъект.Номенклатура"); //в схеме и такой тип
лкСериализатор        = новый СериализаторXDTO(МояФабрикаXDTO);
МойXML.ЗаписатьНачалоЭлемента("Данные");
Спр                     =  Справочники.Номенклатура.НайтиПоКоду(1);
лкСериализатор.ЗаписатьXML(МойXML, Спр.ПолучитьОбъект(), НазначениеТипаXML.Явное);// Ругается. Если кормишь ссылку получишь фигню вида    ==>
МойXML.ЗаписатьКонецЭлемента();МойXML.Закрыть();


==>Cозданный сериализатор "лкСериализатор.ЗаписатьXML(МойXML, Спр.Ссылка, НазначениеТипаXML.Явное)" выплёвывает
<CatalogRef.Номенклатура xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">289d8bb1-4801-11e1-a399-0021002e20bf</CatalogRef.Номенклатура>