[ Вопрос дня ] Почему реквизит объекта с типом ХранилищеЗначения нельзя отобразить на управляемой форме?

Доброго дня, коллеги!

Работа с реквизитом типа ХранилищеЗначения имеет определенные ограничения. Как известно такой реквизит нельзя отобразить на управляемой форме ни в основной конфигурации, ни в расширении. Тренер предлагает воспользоваться базовым приемом разработки через временное хранилище.

Вопрос

Здравствуйте! В расширении создал справочник в новом справочнике добавил реквизит с типом ХранилищеЗначений. Платформа почему-то не видит этот реквизит. Если меняю тип данных, к примеру, на Число, то реквизит становиться видимым. В расширении на форме нельзя использовать реквизиты с типом данных ХранилищеЗначений?

Ответ

Добрый день! Вы имеете в виду, что реквизит с типом ХранилищеЗначения не отображается на форме? Тогда это правильно, аналогичное поведение будет и в основной конфигурации без использования расширения. Платформа в конструкторе формы показывает, что такой реквизит нельзя отобразить на форме:

ХранилищеЗначения

Дело в том, что в таком реквизите могут храниться данные огромного размера, а управляемая форма существует и на сервере, и на клиенте. Данные большого размера из соображений производительности нет смысла передавать при клиент-серверном взаимодействии. Поэтому нужно искать обходные пути. Например, можно воспользоваться временным хранилищем. Такой прием используется при отображении на форме картинки, хранящейся в базе.

Комментарий слушателя

У меня не получается обратится к этому реквизиту на сервере. То есть так:

СхемаКомпоновки = Объект.СхемаКомпоновки.Получить();

Система выдает ошибку, что реквизит не найден.

Ответ

Обратите внимание, что в управляемой форме реквизит Объект имеет тип ДанныеФормыСтруктура, а не СправочникОбъект. Поэтому в нем не будет вложенного реквизита с типом ХранилищеЗначения. Именно об этом сообщает платформа:

ХранилищеЗначения

Значит, чтобы добраться до хранилища значения, нужно получить настоящий объект от такого “урезанного” типа данных:

РеквизитФормыВЗначение("Объект").СхемаКомпоновки.Получить();

Комментарии / обсуждение (2):

  1. Салим

    Здравствуйте. Можете дать пример загрузку файла реквизиту документа с типом хранилище значений?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.