Имя: Пароль:
1C
1С v8
Как записать объектXDTO в Регистр сведений ?
0 SHAURMAN
 
20.12.18
16:03
Народ, всем привет! Подскажите, пожалуйста, есть объектXDTO как его можно сохранить в Регистр сведений?
Если есть идеи у кого-нибудь поделитесь, пожалуйста.
1 mikecool
 
20.12.18
16:05
сериализовать в хмл и запихнуть в хранилище
2 SHAURMAN
 
20.12.18
16:15
я потом все обратно десириализовываю и все типы в этом объекте превращаются в "Строка"

Сериализую вот так:
            
ЗаписьXML = Новый ЗаписьXML;
            
ЗаписьXML.УстановитьСтроку();
            СериализаторXDTO.ЗаписатьXML(ЗаписьXML,ОбъектXDTO);
            
ЗаписанныйОбъект = ЗаписьXML.Закрыть();
            
Сообщение = Новый ХранилищеЗначения(ЗаписанныйОбъект, Новый СжатиеДанных(9));
3 Fragster
 
гуру
20.12.18
16:18
(2)а обратно как достаешь? так-то все работает.
4 SHAURMAN
 
20.12.18
16:31
Как я написал так не получается
Пишет:
{ОбщийМодуль.Загрузка.Модуль(688)}: Ошибка при вызове метода контекста (ЗаписатьXML)
по причине:
Несоответствие типов (параметр номер '2') (Ошибка отображения типов)
5 SHAURMAN
 
20.12.18
16:35
Как я писал код выше,так не получается*
6 Fragster
 
гуру
20.12.18
16:38
надо фабрикуXDTO использовать
7 Fragster
 
гуру
20.12.18
16:38
вместо сериализатораXDTO
8 SHAURMAN
 
20.12.18
16:48
Потом все свойства в ОбъектеXDTO превращаются в тип "строка"

обратно достаю вот так:

    Сообщение = Сообщение.Получить();
    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(Сообщение);
    
    ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
9 SHAURMAN
 
20.12.18
17:17
10 nicxxx
 
20.12.18
17:18
XSD-схема нужна, чтобы при обратной процедуре типизировать поля.
11 nicxxx
 
20.12.18
17:19
загружаешь ее в XDTO-пакеты, главное не забудь namespace определить.
12 SHAURMAN
 
20.12.18
17:36
все равно также все в строках(

ФабрикаВыгрузки = ФабрикаВыгрузки();
    ОбъектXDTOВыгрузки = ФабрикаВыгрузки.ПрочитатьXML(ЧтениеXML);