Cache on Display method implemented at Form level

Some time you have to write display methods on form level, like you needed inputs from form and need to execute the Calculative logic based on those inputs. Cache on form level display method is not supported resulted we have to use the logic to implement the cache. Below code is an example where I have implemented the cache using Maps. In this specific way we have to define a key and value should be calculated and stored in Map. If on next time we have same key then we do not need to recalculate the value and it will be directly fetched from Map.

Cache will be cleared when form closed and refreshed on reopening the form.

public display Amount mzk_osb_TotalMovement(MainAccount _MainAccount)

{

GeneralJournalAccountEntry GeneralJournalAccountEntry;

GeneralJournalEntry GeneralJournalEntry;

str key;

DimensionAttributeValueCombination davc;

if (!MapCalcTMov)

{

MapCalcTMov = new Map(Types::String, Types::Real);

}

key = strFmt(“%1_%2_%3”, _MainAccount.MainAccountId,StartDate.dateValue(),EndDate.dateValue());

if (! MapCalcTMov.exists(key))

{

select sum(AccountingCurrencyAmount) from GeneralJournalAccountEntry

join GeneralJournalEntry

where GeneralJournalEntry.RecId == GeneralJournalAccountEntry.GeneralJournalEntry

join davc

where davc.RecId == GeneralJournalAccountEntry.LedgerDimension

&& davc.MainAccount == _MainAccount.RecId

&& GeneralJournalEntry.AccountingDate >=StartDate.dateValue()

&& GeneralJournalEntry.AccountingDate <=EndDate.dateValue()

&& GeneralJournalEntry.Ledger == Ledgerrecid;

MapCalcTMov.insert(key, GeneralJournalAccountEntry.AccountingCurrencyAmount);

}

return MapCalcTMov.lookup(key);

}

HAPPY DAXING 🙂

 

Advertisements

One Response to Cache on Display method implemented at Form level

  1. Hi Amir, just want to mention that there is a way to make it possible on form level aswell.
    Just use the Attribute [SysClientCacheDataMethodAttribute(true)] in the method header of the display method (no matter where the display method is implemented).

    See my blog for details:
    http://robscode.onl/x-caching-of-display-methods-via-attribute/

    Thanks,
    Robin

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: