Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > База знаний > Наши статьи > 1С Предприятие 8
Batchir
При переходе на платформу выше 8.2.14 и использовании совместимости с предыдущими версиями "Не использовать" есть шанс нарваться на ошибку "Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не необходимо зарегистрироваться для просмотра ссылки или содержит вложенный несериализуемый элемент".

Данная ошибка появляется при помещении в хранилище значений элемент, который не сериализуется.
т.е. если раньше код работал (и сейчас работает в режиме совместимости)
Хранилище = новый ХранилищеЗначений(НеСериализующийсяЭлемент1);

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

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

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

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

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


В общем может кому-то пригодится.
Demon71
Спасибо - работает!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.