Имя: Пароль:
1C
1С v8
XDTO, абстрактный тип
0 markers
 
04.07.18
18:57
Доброго времени суток!
Пишу взаимодействие с API BroadSoft BroadWorks (Облачная АТС Билайн, Автосекретарь МТС и пр.), в данном виде взаимодействия, инициатором события выступает BroadWorks, а 1С у меня принимает через HTTP сервис от BroadWorks данные в формате XML и всё бы хорошо, есть схемы, я её даже загрузил в 1С, пишу следующий код:
   ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.УстановитьСтроку(ТелоСтрокой);
        
   ТипСобытия = ФабрикаXDTO.Тип("http://schema.broadsoft.com/xsi";, "Event");
   Событие = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипСобытия);
И получаю ошибку "Попытка создания объекта абстрактного типа", дело в том, что свойство Event имеет тип BaseEvent который является абстрактным. Не страшно - подумал я, и поменял тип Event на нужный мне который всегда один в моём случае, но возникла проблема уже в типе "EventData" который так-же является абстрактным и там уже нельзя намеренно ограничить тип, так как там будут разные типы и они будут нужны.
Пример XML: https://yadi.sk/d/cnb1z9743YmTW6
Схемы: https://yadi.sk/d/Q4rMnJ3C3YmU6z
Собственно задача, как загрузить данную XML с абстрактными типами?
Заранее спасибо!
1 markers
 
16.07.18
06:30
Собственно сам и разобрался, ошибка моя была в том что я встроил схему в базу, чего делать вовсе не нужно было и простой код:
   ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.УстановитьСтроку(ТелоСтрокой);
   Событие = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
спокойно загружает данные.
Правда всё-равно кривовато загружает эту схему (потерял некоторые нужные данные, и нет информации о типе объекта, которая необходима так как является важной состовляющей) и всё-равно пришлось парсить через ПостроительDOM, но на более простых схемах, можно обойтись и таким способом.
Спасибо за ответы, простите за поднятие мути со дна!
Всех благ!