Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 сен 2024, 22:26

работа с реквизитом типа хранилище значения

Автор AlexVk, 15 фев 2017, 00:09

0 Пользователей и 1 гость просматривают эту тему.

AlexVk

Добрый день!

Мне необходимо сохранить некоторый массив чисел между вызовами процедур ОбработкаЗаполнения и ПриЗаписи для документа.
Платформа 8.3

Чтобы не создавать новую ТЧ решил сделать реквизит типа ХранилищеЗначения. Но что-то не получается. Подскажите что не так?

ОбработкаЗаполнения()
.....
МойМассив = Новый массив();
МойМассив.Добавить(12);
МойМассив.Добавить(53);
РеквизитТипаХранилищеЗначения = Новый ХранилищеЗначения(МойМассив);
.....

------------------

Дальше делаю подписку на событие ПриЗаписи документа и в процедуре определенной в подписке пишу
Процедура РТУПриЗаписи(Источник, Отказ) Экспорт
   МойМассив = Источник.РеквизитТипаХранилищеЗначения.Получить();
....
КонецПроцедуры

Ничего не видно... Вроде как ПриЗаписи вызывается уже после записи документа, т.е. все должно быть...

Где я что-то пропустил?

Заранее спасибо!

alex0402

Цитата: AlexVk от 15 фев 2017, 00:09РеквизитТипаХранилищеЗначения = Новый ХранилищеЗначения(МойМассив);

форма управляемая? в модуле формы? тогда
объект.РеквизитТипаХранилищеЗначения = Новый ХранилищеЗначения(МойМассив);
Спасибо за Сказать спасибо

AlexVk

Да. форма управляемая..
Только все это пишется в модуле объекта.

Путем проб и ошибок выяснено, что проблема в типе реквизита, а именно "ХранилищеЗначения". Если тип сделать "Строка" все работает.

Видимо я еще что-то не понимаю в маршрутизации объектов в УФ.

ilyay

Попробуйте сразу записать объект после установки значения в хранилище.

AlexVk

незя))) а вдруг пользователь не захочет его записывать...

ilyay


После установки значения в хранилище открывается форма, которая конвертирует объект в своё представление.
Хранилища при этом не конвертируются. Не сохранённое значение реквизита теряется при обратной конвертации объекта из представления. Затем запись. Получаете пустое хранилище.

Можете попробовать поместить во временное хранилище, а ссылку поместить в строковый реквизит.
В ПриСозданииНаСервере тут же получаете из хранилища и снова сохраняете в хранилище, но уже с уникальным идентификатором формы, и храните этот адрес в форме, иначе содержимое пропадёт. ПриЗаписиНаСервере в форме у вас будет ТекущийОбъект, там можете в ДополнительныеСвойства вставить эти данные из временного хранилища.
В ПриЗаписи в объекте они будут.


Добавлено: 15 фев 2017, 13:24


А почему бы просто не сделать табличную часть и заполнить её числами, которые в массив кладёте?
Тогда не нужно будет так извращаться.

AlexVk

Почему-то не хотелось делать лишнюю табличную часть.

Нашел выход из положения так.
в обработке заполнения записываю массив в строку при помощи ЗначениеВСтрокуВнутр
а ПриЗаписи получаю его обратно из строки через  ЗначениеИзСтрокиВнутр

пока оставлю так...

Спасибо за разъяснения с УФ.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск