Cache(Key: Integer; ParamValues: IMetabaseObjectParamValues): Variant;
Cache[Key: uinteger; ParamValues: Prognoz.Platform.Interop.Metabase.IMetabaseObjectParamValues]: object;
Key. Ключ объекта кэширования;
ParamValues. Значения параметров объекта кэширования.
Свойство Cache возвращает внутреннюю структуру объекта, который представляет кэш объекта репозитория.
Если объект параметрический, то возможно занести в кэш экземпляры с разными наборами параметров.
В качестве параметра Key для кубов необходимо указывать ключ необходимого варианта отображения куба.
Для выполнения примера понадобится справочник с идентификатором «Dimension» и включенной возможностью кэширования данных.
Добавьте ссылки на системные сборки: Io, Metabase.
Sub UserProc;
Var
MB: IMetabase;
CacheKeeper: IMetabaseObjectInstanceCacheKeeper;
CacheM: Variant;
MObj: IMetabaseObject;
VarStream: Variant;
Stream: IIOStream;
F: IFileStream;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("Dimension").Edit As IMetabaseObject;
CacheKeeper := MObj.Children.Item(0).Bind As IMetabaseObjectInstanceCacheKeeper;
CacheM := CacheKeeper.Cache(MObj.Key, Null);
VarStream := CacheM;
CacheM := Null;
Stream := IOStream.FromVariant(VarStream);
F := New FileStream.Create("C:\Temp\1.dat", FileOpenMode.Write, FileShare.DenyWrite);
F.CopyFrom(Stream, Stream.Size);
End Sub UserProc;
Imports Prognoz.Platform.Interop.ForeIO;
Public Sub Main(Params: StartParams);
Var
MB: IMetabase;
CacheKeeper: IMetabaseObjectInstanceCacheKeeper;
MObj: IMetabaseObject;
CacheM: Object;
VarStream: Object;
FS: FileStreamClass = New FileStreamClass();
IOSt: IOStreamClass = New IOStreamClass();
Stream: Prognoz.Platform.Interop.ForeIO.IIOStream;
Begin
Metabase := Params.Metabase;
MObj := MB.ItemById["Dimension"].Edit() As IMetabaseObject;
CacheKeeper := MObj.Children.Item[0].Bind() As IMetabaseObjectInstanceCacheKeeper;
CacheM := CacheKeeper.Cache[MObj.Key, Null];
VarStream := CacheM;
CacheM := Null;
Stream := IOSt.FromVariant(VarStream);
FS.Create("C:\Temp\1.dat", FileOpenMode.frCreate, FileShare.frDenyWrite);
FS.CopyFrom(Stream, Stream.Size);
End Sub;
После выполнения примера в поток данных будет получена внутренняя структура объекта, который представляет кэш объекта репозитория. Эта структура будет сохранена в файл.
См. также: