Имя: Пароль:
1C
 
Подскажите по использованию внешних OData схем в 1С
0 VS-1976
 
14.11.17
10:22
Не получается использовать внешнюю схему полученную из REST сервиса с помощью команды $metadata.

Гружу так:

пФабрикаXDTO = Новый ФабрикаXDTO;
пЧтение = Новый ЧтениеXML;
пЧтение.ОткрытьФайл( пФайлСхемы );
пОбъектXDTO = пФабрикаXDTO.ПрочитатьXML( пЧтение );
пОбъектXDTO.Проверить();
Сериализатор = Новый СериализаторXDTO( пФабрикаXDTO );

Но 1С не понимает такие типы как Edm.Guid, Edm.String и т.д.

И по этому создание объекта через Сериализатор.ПрочитатьXDTO не проходит, так как 1С их пытается привести в типы схемы http://www.w3.org/2001/XMLSchema


Ошибка преобразования данных XDTO:
НачалоСвойства: {http://www.w3.org/2001/XMLSchema}anyType    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: Name    Форма: Атрибут    Тип: {http://www.w3.org/2001/XMLSchema}anySimpleType

Если кто нибудь сталкивался подскажите в какую сторону нужно копать?
1 hawksib
 
14.11.17
11:38
смущает строчка

пЧтение.ОткрытьФайл( пФайлСхемы );

синтаксис-помощник по этому поводу говорит следующее:

ЧтениеXML (XMLReader)
ОткрытьФайл (OpenFile)
Синтаксис:

ОткрытьФайл(<ИмяФайлаXML>, <Параметры>, <НаборСхемXML>, <Кодировка>)
Параметры:

<ИмяФайлаXML> (обязательный)

Тип: Строка.
Имя файла, содержащего текст XML.
<Параметры> (необязательный)

Тип: ПараметрыЧтенияXML.
Параметры чтения, которые будут использоваться при чтении данных XML.
<НаборСхемXML> (необязательный)

Тип: НаборСхемXML.
Набор схем XML, используемых при проверке читаемого документа XML.
Если набор схем указан, но не проверен и включена проверка документа XML, то будет выполнена проверка набора схем.
<Кодировка> (необязательный)

Тип: Строка.
Позволяет задать кодировку входного
2 VS-1976
 
14.11.17
12:12
(1) Дело не в кодировке. Дело в том что 1С не знает эти типы. Их можно теоретически подгрузить, но где их взять... хоть руками создавай схему...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн