Доброго дня, коллеги!
Работа с реквизитом типа ХранилищеЗначения имеет определенные ограничения. Как известно такой реквизит нельзя отобразить на управляемой форме ни в основной конфигурации, ни в расширении. Тренер предлагает воспользоваться базовым приемом разработки через временное хранилище.
Вопрос
Ответ
Добрый день! Вы имеете в виду, что реквизит с типом ХранилищеЗначения не отображается на форме? Тогда это правильно, аналогичное поведение будет и в основной конфигурации без использования расширения. Платформа в конструкторе формы показывает, что такой реквизит нельзя отобразить на форме:
Дело в том, что в таком реквизите могут храниться данные огромного размера, а управляемая форма существует и на сервере, и на клиенте. Данные большого размера из соображений производительности нет смысла передавать при клиент-серверном взаимодействии. Поэтому нужно искать обходные пути. Например, можно воспользоваться временным хранилищем. Такой прием используется при отображении на форме картинки, хранящейся в базе.
Комментарий слушателя
СхемаКомпоновки = Объект.СхемаКомпоновки.Получить();
Система выдает ошибку, что реквизит не найден.
Ответ
Обратите внимание, что в управляемой форме реквизит Объект имеет тип ДанныеФормыСтруктура, а не СправочникОбъект. Поэтому в нем не будет вложенного реквизита с типом ХранилищеЗначения. Именно об этом сообщает платформа:
Значит, чтобы добраться до хранилища значения, нужно получить настоящий объект от такого “урезанного” типа данных:
РеквизитФормыВЗначение("Объект").СхемаКомпоновки.Получить();
Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки.
Здравствуйте. Можете дать пример загрузку файла реквизиту документа с типом хранилище значений?
Добрый день!
Решение такой задачи рассматриваем в разделе по управляемым формам – тема № 14: Как реализовать отображение картинок на форме и хранение их в базе.