Имя: Пароль:
1C
1С v8
Сериализация и десериализация ТаблицыЗначений
0 Kamik-7
 
28.03.14
12:49
Выгружаю ТЗ:

ФайлXML = Новый ЗаписьXML();
    ФайлXML.ОткрытьФайл(ИмяФайла);

    ЗаписатьXML(ФайлXML, Новый ХранилищеЗначения(НекаяТаблицаЗначений, Новый СжатиеДанных(9)), НазначениеТипаXML.Явное);
    
    ФайлXML.Закрыть()

А как назад загрузить ее теперь?
1 Maxus43
 
28.03.14
12:54
ты хранилище значений сериализовал, его и получай
2 Cube
 
28.03.14
12:54
Что, ПрочитатьXML()?
3 Maxus43
 
28.03.14
12:54
сразу ТЗ можно Сериализовать, зачем хранилище?
4 Рэйв
 
28.03.14
12:55
Я делаю проще

ЗначениеВФайл(ПутьКФайлу,ТЗ);
и
ТЗ=ЗначениеИзФайла(ПутьКФайлу);    

"Входит и выходит.Замечательно выходит!"(С)
5 Рэйв
 
28.03.14
12:56
Причем у меня там и ссылки и перечисления и всякой фигни бывает
6 Cube
 
28.03.14
12:58
(4) (5) Не мешай пилить бабло!
7 Рэйв
 
28.03.14
12:59
(6)А... Ну если с этой стороны подходить, то тогда конечно:-)
8 Kamik-7
 
28.03.14
13:17
(6) "баблопил", блин :-)
(4) Спасибо!
9 H A D G E H O G s
 
28.03.14
13:21
(4) Ужасть.
10 Kamik-7
 
28.03.14
13:22
(9) Обоснуй
11 H A D G E H O G s
 
28.03.14
13:23
Сериализуйте правильно

Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
ОбъектXDTO = Сериализатор.ЗаписатьXDTO(ТаблицаЗначенийСДанными);
ЗаписьFI = Новый ЗаписьFastInfoset;
ЗаписьFI.ОткрытьФайл("D:\test\new.fi");
ФабрикаXDTO.ЗаписатьXML(ЗаписьFI, ОбъектXDTO);
ЗаписьFi.Закрыть();
12 H A D G E H O G s
 
28.03.14
13:24
(11) Ну или писать не в файл, а в Двоичные и хранить в базе.
13 H A D G E H O G s
 
28.03.14
13:24
(11) Скорость выше раз в 5, объем меньше - в 3 раза.
14 H A D G E H O G s
 
28.03.14
13:25
Десериализовать только (в отличии от XML) на Тонком не получиться, уж не знаю, почему. Лениво в Тонкий движок FI вставлять было наверное.
15 Kamik-7
 
28.03.14
13:33
Понаглею :)
как десериализовать из (11)
16 H A D G E H O G s
 
28.03.14
14:01
ЧтениеFI = Новый ЧтениеFastInfoset;
ТипОбъектаXDTO=ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core","ValueTable";);
    ЧтениеFI.ОткрытьФайл("D:\test\new.fi");
    ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеFI,ТипОбъектаXDTO);
    ОбъектXDTO.Проверить();
    Сериализатор=Новый СериализаторXDTO(ФабрикаXDTO);
    ТаблицаДанных=Сериализатор.ПрочитатьXDTO(ОбъектXDTO);
17 H A D G E H O G s
 
28.03.14
14:01
ТипОбъектаXDTO=ФабрикаXDTO.Тип("h t t p://v8.1c.ru/8.1/data/core","ValueTable");
18 Kamik-7
 
28.03.14
14:14
(11) че-то у меня ничего не пишет в файл. пустой.
19 H A D G E H O G s
 
28.03.14
14:34
(18) Гхм.. Странно. Большое дерево значений записалось на раз, табличный документ тоже записался. А вот табличка из 1 строки - не пишется, пустой файл.
20 Kamik-7
 
28.03.14
14:52
структура вообще не пишется
21 H A D G E H O G s
 
28.03.14
14:53
(20) Пиши тогда в XML
22 Рэйв
 
28.03.14
15:00
(21)  Ну вот мы и вернулись в начало сабжа и т.к. в xml не получается - плавно переходим к (4)
:-)
23 jsmith82
 
28.03.14
15:02
(4) тоже так же делаю
не понимаю это возни с хмл
24 jsmith82
 
28.03.14
15:03
(11) +1
тоже тема
25 H A D G E H O G s
 
28.03.14
15:03
(22) В XML получается, в FI не получается.
26 H A D G E H O G s
 
28.03.14
15:03
ЗаписьFI = Новый ЗаписьFastInfoset;
заменить на
ЗаписьFI = Новый ЗаписьXML;
27 H A D G E H O G s
 
28.03.14
15:04
Надо поковырять универсальнуювыгрузкувXML, как они там в FI пишуть.
28 Леша1с
 
28.03.14
17:12
(11) он не сериализует многие объекты.
(0) А вообще, зачем сериализовать?