Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Трабл с кэшированием объектов (число прочтений - 2885 )
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Трабл с кэшированием объектов
14. Марта 2013 :: 02:32
Печать  
Короче, трабл:

Есть документ Заявка, в нем есть реквизит Договор.
При записи Заявки некоторые реквизиты Договора синхронизируются с текущими значениями элементов формы документа (т.е. значения физически хранятся в договоре, а управление ими идет через форму документа).

Код
Выбрать все
	оДоговоры = СоздатьОбъект("ТСправочник.Договоры");
	оДоговоры.ПолучитьОбъект(Договор);
	оДоговоры.ОбновитьДанныеДоговораПоЗаявке(Контекст); 



Далее Контекст документа сразу передается еще в пару мест, и там через Договор идет обращение к этим реквизитам.
Трабл в том, что обращаясь через Конт.Договор.Реквизит - 1Ска использует значение из кэша (причем, какого-то хитрого кэша, привязанного к документу).
Конкретно в каждом месте, конечно, можно разрулить вот так: _Договор = Конт.Договор.ТекущийЭлемент();
Но в идеале бы заставить 1Ску обновить данные в кэше (например, такое обновление происходит при перевыборе Договора в форме).

варианты в духе
Код
Выбрать все
	_Договор = Договор.ТекущийЭлемент();
	Договор = _Договор;
	Сообщить("" + Договор.Реквизит);
	Сообщить("" + Договор.ТекущийЭлемент().Реквизит);
	Сообщить("" + Договор.Реквизит + " / " + Договор.ТекущийЭлемент().Реквизит); 


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

Есть идеи, как это побороть?
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Трабл с кэшированием объектов
Ответ #1 - 14. Марта 2013 :: 06:15
Печать  
Написать вопрос на форуме - это верный способ найти решение самостоятельно:

_Договор = Договор;
Договор = "";
Договор = _Договор;

Даже ТекущийЭлемент() нигде не нужен
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать