|
Сохранить объект XDTO | ☑ | ||
---|---|---|---|---|
0
temrmal
08.08.22
✎
11:40
|
Добрый день!
Необходимо сохранить объектXDTO в реквизит документа, для того чтобы потом его можно было восстановить. Проблема - после сериализации в XML, потом обратно в XDTO слетают типы значений как я понял. И при попытке добавить данный "объектXDTO" в определенный "пакетXDTO", потомком которого изначальный XDTO являлся, программа ругается что тип восстановленного из XML строки XDTO не подходит. 1. СОХРАНЯЮ (ДанныеXDTO) ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); ПараметрыОбмена.МояФабрикаXDTO.ЗаписатьXML(ЗаписьXML,ДанныеXDTO,,ПараметрыОбмена.ПространствоИмен,,НазначениеТипаXML.Явное); ЗначениеXML = ЗаписьXML.Закрыть(); 2. ЧИТАЮ ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ТекДокумент.Объект.РеквизитыОплаты.Получить(),); - это строку XML получаю ТипДокументXDTO = ПараметрыОбмена.МояФабрикаXDTO.Тип(ПараметрыОбмена.ПространствоИмен,"Документ"); XDTOДокумент = ПараметрыОбмена.МояФабрикаXDTO.ПрочитатьXML(ЧтениеXML); XDTOКонтейнер.Документ.Добавить(XDTOДокумент); - ВОТ ТУТ ОШИБКА Несоответствие типов XDTO: Тип '{http://www.w3.org/2001/XMLSchema}anyType' не соответствует типу '{urn:1C.ru:commerceml_3}Документ' Тип свойства не соответствует типу значения Как записать XML с правильной типизацией. Вроде и пространство имен указал при записиXML |
|||
1
Жан Пердежон
08.08.22
✎
13:59
|
XDTOДокумент.Тип() - ?
|
|||
2
Жан Пердежон
08.08.22
✎
14:12
|
ну и какой ДанныеXDTO.Тип()
|
|||
3
temrmal
10.08.22
✎
16:13
|
При чтении Тип "XDTOДокумент" получается такой '{http://www.w3.org/2001/XMLSchema}anyType' . Я так понимаю при записи XML файла из Типа '{urn:1C.ru:commerceml_3}Документ' превращается '{http://www.w3.org/2001/XMLSchema}anyType'. Хотя через фабрику записываю и указываю пространство имен.
Если в чтении пишу так: ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ТекДокумент.Объект.РеквизитыОплаты.Получить(),); - это строку XML получаю ТипДокументXDTO = ПараметрыОбмена.МояФабрикаXDTO.Тип(ПараметрыОбмена.ПространствоИмен,"Документ"); - тут тип нужный получается XDTOДокумент = ПараметрыОбмена.МояФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипДокументXDTO); - вот тут явно тип указываю, с надеждой преобразования автоматически, то ошибку дает тоже Как типизацию при записи XML сохранить? |
|||
4
rsv
10.08.22
✎
20:23
|
(0) может просто тип реквизита строка - и записать туды строку xml?
|
|||
5
temrmal
10.08.22
✎
21:51
|
Нет, мне нужно чтобы
XDTOДокумент = ПараметрыОбмена.МояФабрикаXDTO.ПрочитатьXML(ЧтениеXML); был с типом {urn:1C.ru:commerceml_3}Документ, какой он бывает перед преобразованием в XML. а после обратного преобразования из XML XDTOДокумент имеет те же свойства, что и у XDTO с типом {urn:1C.ru:commerceml_3}Документ, но вот тип становится '{http://www.w3.org/2001/XMLSchema}anyType'. Либо как то преобразовать обойдя все свойства. Мне кажется при записи XDTO теряется тип Вот что получается после записи в XML из XDTO нужного типа <anyType xmlns="urn:1C.ru:commerceml_3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:anyType"> <Ид xmlns="">3</Ид> <Номер xmlns="">3</Номер> <Дата xmlns="">2022-08-08</Дата> <ХозОперация xmlns="">Выплата безналичных денег</ХозОперация> <Роль xmlns="">Продавец</Роль> <Валюта xmlns="">руб</Валюта> <Курс xmlns="">1</Курс> <Сумма xmlns="">607.0000</Сумма> <НомерВерсии xmlns="">15</НомерВерсии> <Основание xmlns="">70</Основание> <Контрагенты xmlns=""> <Контрагент> <Ид>3#anonymous_xF8UlP67A# Розничный покупат</Ид> |
|||
6
Жан Пердежон
11.08.22
✎
15:31
|
(5) ответь на вопрос в (2)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |