Багофича qbds.cacheAddMethod() для _updateOnWrite = true
Привет всем.
Заметил особенность кеширования дисплей методов для параметра _updateOnWrite = true метода cacheAddMethod().
Обновление значений дисплей методов идет при вызове super() в табличном методе update. (А лучше бы шло после отработки update.)
Последствия :
Если есть форма, шапка - строки (например SalesTable c двумя датасорсами - SalesTable_ds и SalesLine_ds)
На шапке есть дисплей методы отображающие агрегированные суммы из строк. Меняем в шапке скидку, это влияет на сумму по строке. Но при сохранении шапки, дисплей методы шапки обновляются до того как обновятся строки (обновление строк стоит после super() в методе update шапки). - Т.е. дисплей методы показывают неактуальные, старые значения сумм по строкам. Нужно сохранить шапку повторно, и только тогда обновятся дисплей методы. Для таких ситуаций (весьма часто встречающихся)) параметр _updateOnWrite = true бесполезен. Приходится его явно ставить в false и на write датасорса вызывать для каждого дисплей метода cacheCalculateMethod
Либо скопом один раз вызывать salesTable.executeCachedDisplayMethods()
(Ax 2012 R3)
|