Имя: Пароль:
1C
1С v8
Как сделать так, чтобы фабрика XDTO правильно определяла тип?
0 Fragster
 
гуру
13.12.12
17:43
Вот есть такой кусок:

Фабрика = СоздатьФабрикуXDTO(Схема);
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ИмяФайла);
Объект = Фабрика.ПрочитатьXML(Чтение, Фабрика.Тип("URI", "Report"));

Файл ранее получен с использованием той же схемы данных полностью аналогичным способом, но
Объект = Фабрика.ПрочитатьXML(Чтение); не определяет само тип, а хотелось бы. Может что-нибудь надо в схему добавить?

Схема получена из пакета XDTO, который содержит только определения типов. Пробовал добавить корневое свойство в файл - не помогло :(
1 Serginio1
 
13.12.12
17:52
попробуй так
Имя=ЧтениеXML.Имя;
ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,Имя));
2 Serginio1
 
13.12.12
17:54
ЧтениеXML=Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ЧтениеXML.ПерейтиКСодержимому();

Имя=ЧтениеXML.Имя;
ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,Имя));
3 Fragster
 
гуру
13.12.12
18:43
не вышло
4 Serginio1
 
13.12.12
18:45
А какой именно тип?
5 Serginio1
 
13.12.12
18:46
Тьфу заменить ФабрикаXDTO на фабрика

ЧтениеXML=Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ЧтениеXML.ПерейтиКСодержимому();

Имя=ЧтениеXML.Имя;
ОбъектXDTO=Фабрика.ПрочитатьXML(ЧтениеXML,Фабрика.Тип(ЧтениеXML.URIПространстваИмен,Имя));
6 Fragster
 
гуру
13.12.12
18:48
да не, это я тупой. отладчиком смотрел свойства ЧтениеXML после Фабрика.ПрочиатьXML. Естественно, в свойствах уже пусто было.
7 Fragster
 
гуру
13.12.12
18:49
все получилось, спасибо!
8 Fragster
 
гуру
13.12.12
18:53
может еще можно сделать так, чтобы реквизиты объекта XDTO при его создании заполнялись? Особенно интересует в случае сложной структуры - когда реквизиты сами являются объектами.