Показать сообщение отдельно
Старый 26.06.2007, 18:00   #1  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Lightbulb SaveContents = No позволяет кэшировать
... данные на уровне записи.

К примеру, в производственном модуле часто из метода в метод передается буфер ProdTable. Если создать поле XXXInventUnitIdCache и объявить его как SaveContents = No, можно организовать чрезвычайно эффективное кеширование складской единицы хранения без расходования места в БД, если получать ее всегда с помощью такого метода:

X++:
display UnitId XXXinventUnitId()
{
    if (! this.XXXInventUnitIdCache)
    {
        this.XXXInventUnitIdCache =
            (select firstonly UnitId from inventTableModule
                where inventTableModule.ItemId      == this.ItemId
                   && inventTableModule.ModuleType  == ModuleInventPurchSales::Invent).UnitId;
    }

    return this.XXXInventUnitIdCache;
}