Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Десериализация из двоичных данных

Десериализация из двоичных данных
Я
   Gorr
 
18.07.19 - 11:13
Уважаемые Коллеги, добрый день!
Нужно выполнить сериализацию / десериализацию объекта через двоичные данные. С сериализацией проблем не возникает. А вот с десерализацией:
Сериализация:
ЗаписьFI = Новый ЗаписьFastInfoset;
ЗаписьFI.УстановитьДвоичныеДанные();
ЗаписьFI.ЗаписатьОбъявлениеXML();
СериализаторXDTO.ЗаписатьXML(ЗаписьFI,СериализуемыйОбъект,НазначениеТипаXML.Явное);
ДД = ЗаписьFI.Закрыть();
Десериализация
ЧтениеFI = Новый ЧтениеFastInfoset;
ЧтениеFI.УстановитьДвоичныеДанные(ДД);
Вот тут ошибка:
СериализаторXDTO.ПрочитатьXML(ЧтениеFI, Тип("Соответствие"));
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/core}Map    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}Map
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: pair    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}KeyAndValue
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://v8.1c.ru/8.1/data/core}KeyAndValue
Проверка свойства 'Key':
    форма: Элемент
    имя: {http://v8.1c.ru/8.1/data/core}Key
    тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Тип свойства неопределен
Квалифицированное имя типа: 'xs:decimal'
по причине:
Ошибка отображения пространства имен
Отсутствует отображение для префикса: 'xs'
 
 
   olegves
 
1 - 18.07.19 - 11:17
(0) ДД надо сначала в Base64 и далее зиповать. Никакой сериализации там не надоть
   vde69
 
2 - 18.07.19 - 11:20
Base64 - надо
зиповать - не надо
   olegves
 
3 - 18.07.19 - 11:22
(2) если предполагается передача через тырнет, то надо
   vde69
 
4 - 18.07.19 - 11:23
(3) зачем зиповать кусок когда зипуется весь пакет в целом?
   Gorr
 
5 - 18.07.19 - 11:24
ДД нет. его надо получить из сериализуемого значения.
Если предлагается сначала сериализация в строку (через XML например), а затем Base64Значение, то для этого FastInfoset и был придуман (за один шаг).
   Gorr
 
6 - 18.07.19 - 11:25
как я уже показал, сериализация в дд через FastInfoset проблем не вызывает.
Вопрос как потом сериализовать обратно из дд...
   olegves
 
7 - 18.07.19 - 11:27
(5) FastInfoset в версионировании БСП используется - посмотри там
   Gorr
 
8 - 18.07.19 - 11:30
Насколько я понял он там только для конверсии объектов в дд используется для подсчета контрольной суммы, чтобы понять есть ли различия между разными версиями. Кстати, идею преобразования объектов в дд как раз из БСП и взял. Вопрос в обратном преобразовании.
   vde69
 
9 - 18.07.19 - 11:30
скопируй строку ДД в файл и посмотри, что именно там
   Gorr
 
10 - 18.07.19 - 13:05
Стандартные объекты сериализуются/десериализуются. К сожалению десириализация Соответствия вызывает ошибку. Видимо не все что может быть сериализовано с помощью FastInfoset может быть восстановленно обратно. Вопрос решил через ЗначениеВФайл/ЗначениеИзФайла. Как всегда в 1С через одно место...

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.