Database: IMetabaseObject;
Свойство Database определяет базу данных, в которой необходимо хранить кэш объекта репозитория.
Для выполнения примера предполагается наличие в репозитории базы данных с идентификатором «DB», а также табличного справочника с идентификатором «Dimension».
Добавьте ссылки на системные сборки: Dimensions, Metabase.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObjectDescriptor;
CrInfo: IMetabaseObjectCreateInfo;
CacheKeeper: IMetabaseObjectInstanceCacheKeeper;
Dimension: IDimInstance;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("Dimension");
CrInfo := MB.CreateCreateInfo;
CrInfo.Permanent := True;
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBE_CACHE_SAVER;
CrInfo.Parent := MObj;
CacheKeeper := MB.CreateObject(CrInfo).Edit As IMetabaseObjectInstanceCacheKeeper;
CacheKeeper.Database := MB.ItemById("DB").Bind;
CacheKeeper.SplitBLOB := True;
CacheKeeper.PieceSize := 512;
(CacheKeeper As IMetabaseObject).Save;
Dimension := MObj.Open(Null) As IDImInstance;
Dimension.SaveCache;
End Sub
UserProc;
Imports Prognoz.Platform.Interop.Dimensions;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObjectDescriptor;
CrInfo: IMetabaseObjectCreateInfo;
CacheKeeper: IMetabaseObjectInstanceCacheKeeper;
Dimension: IDimInstance;
Begin
MB := Params.Metabase;
MObj := MB.ItemById["Dimension"];
CrInfo := MB.CreateCreateInfo();
CrInfo.Permanent := True;
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBE_CACHE_SAVER As System.Int32;
CrInfo.Parent := MObj;
CacheKeeper := MB.CreateObject(CrInfo).Edit() As IMetabaseObjectInstanceCacheKeeper;
CacheKeeper.Database := MB.ItemById["DB"].Bind();
CacheKeeper.SplitBLOB := True;
CacheKeeper.PieceSize := 512;
(CacheKeeper As IMetabaseObject).Save();
Dimension := MObj.Open(Null) As IDImInstance;
Dimension.SaveCache();
End Sub;
При выполнении примера в базе данных будет создано хранилище закэшированных объектов репозитория, в котором будет сохранён кэш указанного табличного справочника.
См. также: