Имя: Пароль:
1C
 
XDTO MetaDataObject откуда появляется?
0 quest
 
21.11.18
16:39
Платформа - 8.3.11.2867
Код -
    
    streamXML = new XMLReader;
    streamXML.OpenFile("E:\src\1C\readMD\md.xdto");
    obj = XDTOFactory.ReadXML(streamXML,XDTOFactory.Type("http://v8.1c.ru/8.1/xdto","Model";));
    newFactory = new XDTOFactory(obj);
    MetaDataObjectType = newFactory.Type("http://v8.1c.ru/8.3/MDClasses","MetaDataObject";)

Содержимое md.xdto

<?xml version="1.0" encoding="UTF-8"?>
<model xmlns="http://v8.1c.ru/8.1/xdto"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
    <package targetNamespace="http://v8.1c.ru/8.3/MDClasses"; elementFormQualified="true" attributeFormQualified="false">
    </package>
</model>

Как видно - в модели нет определения типа MetaDataObject, но! в переменной MetaDataObjectType есть какое-то кривое определение типа.
Два  вопроса- как это произошло? Какой метод исправления этой ошибки есть (кроме смены tns и версии платформы)?
1 quest
 
21.11.18
19:50
ап
2 Cyberhawk
 
21.11.18
22:22
Так это платформенной фабрики тип
3 Cyberhawk
 
21.11.18
22:24
Ну а так-то даже чтение-запись конфы, выгруженной платформой в ХМЛ, через фабрику этой же платформы, не дает неизменного результата - типы теряются.
Так что бросай ты это гиблое дело - через фабрику читать.
4 quest
 
21.11.18
22:36
я так понимаю - конкретно для tns "http://v8.1c.ru/8.3/MDClasses"; платформа забивает на определение переданное ей и берет свое внутреннее определение? так?
5 Cyberhawk
 
21.11.18
22:51
Ты фабрику-то создай через СоздатьФабрикуXDTO
6 quest
 
22.11.18
06:11
(5) Да как ее не создавай - финя на выходе.

    newFactory = CreateXDTOFactory("E:\src\1C\readMD\md.xsd");
    MetaDataObjectType = newFactory.Type("http://v8.1c.ru/8.3/MDClasses","MetaDataObject";);

содержимое md.xsd

<xs:schema xmlns:tns="http://v8.1c.ru/8.3/MDClasses"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://v8.1c.ru/8.3/MDClasses"; attributeFormDefault="unqualified" elementFormDefault="qualified"/>


Все равно есть определение типа для MetaDataObject
Хотя быть не должно