Имя: Пароль:
1C
 
Интересный кейс сериализации Хранилища значений.
0 Гений 1С
 
гуру
11.11.25
21:28
Вот тестовый код, можно погонять в консоли кода, запускать надо на сервере (на клиенте нет таблицы значений):


ТЗ = Новый ТаблицаЗначений();

ДанныеТЗ = Новый ХранилищеЗначения(ТЗ);
Строка = XMLСтрока(ДанныеТЗ);

Сообщить(Строка);

ДД = ПолучитьДвоичныеДанныеИзBase64Строки(Строка);
СтрокаХЗ = ПолучитьСтрокуИзДвоичныхДанных(ДД,"utf-8");
//Сообщить(СтрокаХЗ);
Поз = Найти(СтрокаХЗ, "{");
Если Поз <> 0 тогда
    Сообщить("Позиция фигурной скобки: " + Поз);
    СтрокаХЗ = Сред(СтрокаХЗ, Поз);
КонецЕсли;

РезТЗ = ЗначениеИзСтрокиВнутр(СтрокаХЗ);
Сообщить(ТипЗнч(РезТЗ));


Есть какой-то иной способ десериализации такого хранилища значений?

СтрокаХЗ там занятная получается (на картинке).
1 Garykom
 
гуру
11.11.25
21:30
Геня, научись уже пользоваться поиском в инете
На ИСе несколько статей есть, даже как читать данные ХЗ напрямую из СУБД
2 Гений 1С
 
гуру
11.11.25
21:51
(1) ответ из "позы гуру" и "посылом в поиск" мне не интересен.
3 PR
 
11.11.25
23:48
(1) Ему не нужен ответ, ему нужно внимание
В бложек никто не ходит, а внимания хочется
4 AlexKimp
 
12.11.25
07:42
Эммм... Как вы лодку назовете...
Назвал СтрокаХЗ - получил строку ХЗ )))
5 Мультук
 
гуру
12.11.25
08:31
(0)

1) Либо автор не предусматривал десериализацию.
Например была поставлена задача сериализовать данные
и она успешно решена. Задачи десериализовать не было.

2) Либо у автора сериализации на этапе создания кода был "лаксианский ключ", который впоследствии был утерян.
Это всё объясняет.
6 RomanYS
 
12.11.25
09:50
(0) зачем такая мутная сериализация, если ожидается, что она даст результат эквивалентный ЗначениеВСтрокуВнутр(ТЗ)?
7 p-soft
 
12.11.25
10:04
(6) затем что помещение в хранилище одновременно жмет данные алгоритмом deflate.
в инете все есть
8 p-soft
 
12.11.25
10:04
(7) это альтернатива zip, но еще и работа с потоками в памяти