Версия для печати темы (https://pro1c.org.ua/index.php?s=b5062f874ea1efb0c62f1b020e299bb2&showtopic=6543)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С Предприятие 8 _ Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент

Автор: Batchir 01.03.12, 12:57

При переходе на платформу выше 8.2.14 и использовании совместимости с предыдущими версиями "Не использовать" есть шанс нарваться на ошибку "Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не http://pro1c.org.ua/redirect.php?http://ru.wikipedia.org/wiki/Сериализация или содержит вложенный несериализуемый элемент".

Данная ошибка появляется при помещении в хранилище значений элемент, который не сериализуется.
т.е. если раньше код работал (и сейчас работает в режиме совместимости)

Хранилище = новый ХранилищеЗначений(НеСериализующийсяЭлемент1);

и например дальше где-то получалось значение:
НеСериализующийсяЭлемент2 = Хранилище.Получить();

то при отключении совместимости код будет выдавать вышеописанную ошибку.
1С советует выставить режим совместимости со старой платформой, где такой код не являлся ошибкой, но что делать когда включить режим совместимости не является возможным?

Я вышел из сложившейся ситуации следующим образом с использованием функций ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр:

СтрокаВнутр1 = ЗначениеВСтрокуВнутр(НеСериализующийсяЭлемент1);
Хранилище = новый ХранилищеЗначений(СтрокаВнутр1);

И дальше уже получал это значение:
СтрокаВнутр2 = Хранилище.Получить();
НеСериализующийсяЭлемент2 = ЗначениеИзСтрокиВнутр(СтрокаВнутр2);


В общем может кому-то пригодится.

Автор: Demon71 15.02.16, 13:35

Спасибо - работает!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua