|
8.1 СериализаторXDTO Отсутствует отображение для типа 'Структура' | ☑ | ||
---|---|---|---|---|
0
MaxS
14.04.18
✎
13:23
|
Нужно выгрузить структуру в xml файл. Код на платформе 8.1 генерирует ошибку, на 8.3 работает.
ЗначениеСвойства = Новый Структура("тест","тест"); ЗначениеXDTO = СериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства); МойСериализаторXDTO = Новый СериализаторXDTO(МояФабрикаXDTO); ЗначениеXDTO = МойСериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства); Текст ошибки: Ошибка при вызове метода контекста (ЗаписатьXDTO): Ошибка отображения типов: Отсутствует отображение для типа 'Структура' ЗначениеXDTO = СериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства); Или: ЗначениеXDTO = МойСериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства); Если из МояФабрикаXDTO убрать xsd схему "http://v8.1c.ru/8.1/data/core", то ошибка появляется на любой платформе. Логично предположить, что в МояФабрикаXDTO загружены требуемые схемы. Почему не работает? |
|||
1
Franchiser
гуру
14.04.18
✎
14:47
|
На клиенте делаешь?
|
|||
2
MaxS
14.04.18
✎
14:54
|
(1) Толстый клиент, платформа 8.1, конфигурация УТ 10.2.
Та же самая конфигурация на платформе 8.3 в режиме совместимости платформы 8.1, тот же код - всё работает. |
|||
3
Franchiser
гуру
14.04.18
✎
17:50
|
Попробуй в модуль объекта вставить этот код
|
|||
4
hhhh
14.04.18
✎
18:11
|
(2) сама структура ни при чем. Это внутри структуры в одном из полей какая то фигня. Com-объект или еще что-то
|
|||
5
Franchiser
гуру
14.04.18
✎
18:16
|
В (0) в структуре только элемент "тест"
|
|||
6
hhhh
14.04.18
✎
18:21
|
а, блин - это 8.1
|
|||
7
MaxS
14.04.18
✎
21:16
|
(3) В модуле объекта и в модуле формы результат одинаков, пробовал.
|
|||
8
MaxS
15.04.18
✎
07:45
|
Решение нашлось. Поиск причин бага и его исправления более простым способом продолжается!
Информация по схеме "http://v8.1c.ru/8.1/data/core" МойСериализаторXDTO.Фабрика.Пакеты[1].Количество() равно 43 на платформе 8.3 и равно 18 на платформе 8.1. Тип "Structure" почему-то пропадает. Если загрузить такую же схему, изменив URI на такой "http://v8.1c.ru/8.2/data/core", на платформе 8.1 количество получаем 43. Но МойСериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства) все равно не работает. Нашлось обходное решение. Такая конструкция работает: ТипСтруктура = МояФабрикаXDTO.Тип("http://v8.1c.ru/8.2/data/core", "Structure"); СтруктураXDTO = МояФабрикаXDTO.Создать(ТипСтруктура); Далее дело техники в цикле рекурсивно обходим структуру и заполняем ОбъектXDTO Вызывать функцию примерно так: ЗначениеXDTO = МояСтруктураВОбъектXDTO(ЗначениеСвойства, МойСериализаторXDTO); Корректно обрабатываются такие значения: ЗначениеСвойства1 = Новый Структура("тест3,тест4","тест",ТекущаяДата()); ЗначениеСвойства2 = Новый Структура("тест2",ЗначениеСвойства1); ЗначениеСвойства = Новый Структура("тест",ЗначениеСвойства2); После записи xml файла открываем его как текстовый и меняем "http://v8.1c.ru/8.2/data/core" на "http://v8.1c.ru/8.1/data/core" - такой вот костыль. |
|||
9
drei
15.04.18
✎
12:51
|
(8) А с чего ты вообще взял, что это ошибка? 8.1 не умеет сериализовать структуру. Совсем. 8.3 в режиме совместимости дает тебе этот шанс. Так что меня платформу или засучивай рукава и пиши XML без обработки вручную.
Хотя можно еще повозмущаться, что 7.7 в XDTO не умеет, да. |
|||
10
MaxS
15.04.18
✎
13:11
|
(9) Ну 8.1 не умеет и ладно. Почему фабрика, которую создали программно зависит от фабрики платформы?
Менять платформу - это не выход, т.к. моя цель предоставить решение для клиентов с любой платформой. И 7.7 можно заставить генерировать xml, пригодный для последующего разбора, тут вопросов нет, т.к. границы возможностей известны. |
|||
11
drei
15.04.18
✎
13:24
|
(10) Потому что пространство имен.
|
|||
12
MaxS
15.04.18
✎
13:37
|
(11) Вероятно так и задумано, но неудобно. Если забыл указать какую-то схему в своей фабрике, то типовая не подхватывается, а если хочешь подменить типовую, то она мешается. Если разработчик так решил, значит так надо, зачем мешать и "баг" делать фичей? ;)
|
|||
13
drei
15.04.18
✎
13:54
|
(12) В пространство имен, например, "http://www.w3.org/2001/XMLSchema" ничего не хочешь добавить? Ну слава Богу!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |