GetItemsFromDatabase(
[Destkey: Integer = -1;]
[ParamValues: IMetabaseObjectParamValues: = Null]): ICubeCacheItems;
Destkey. Ключ варианта отображения куба.
ParamValues. Набор значений параметров.
Метод GetItemsFromDatabase в соответствии с указанными параметрами получает экземпляры кэша из хранилища кэша в СУБД.
Если для указанного варианта отображения куба или набора значений параметров отсутствуют кэшированные данные, то метод вернёт пустую коллекцию экземпляров кэша.
Для выполнения примера предполагается наличие стандартного куба с идентификатором STD_CUBE. Для куба закэширован какой-либо набор данных.
Добавьте ссылки на системные сборки: Cubes, Metabase.
Sub UserProc;
Var
MB: IMetabase;
MDesc, CacheDesc: IMetabaseObjectDescriptor;
CacheSaver: ICubeCacheSaver;
Items: ICubeCacheItems;
Begin
MB := MetabaseClass.Active;
MDesc := MB.ItemById("STD_CUBE");
// Получение хранилища кэша
CacheDesc := GetCache(MDesc);
If CacheDesc <> Null Then
CacheSaver := CacheDesc.Bind As ICubeCacheSaver;
// Экземпляры кэша
из СУБД
Items := CacheSaver.GetItemsFromDatabase;
ShowCacheItems(Items);
End If;
End Sub UserProc;
Function GetCache(MObj: IMetabaseObjectDescriptor): IMetabaseObjectDescriptor;
Var
Desc: IMetabaseObjectDescriptor;
Begin
For Each Desc In MObj.Children Do
If Desc.ClassId = MetabaseObjectClass.KE_CLASS_CUBE_CACHE_SAVER Then
Return Desc;
End If;
End For;
Return Null;
End Function GetCache;
Sub ShowCacheItems(Items: ICubeCacheItems);
Var
Item: ICubeCacheItem;
DimSS: IDimSelectionSet;
DimS: IDimSelection;
i, c: Integer;
Begin
Debug.WriteLine("Количество экземпляров кэша: " + Items.Count.ToString);
c := Items.Count;
For i := 0 To c - 1 Do
Item := Items.Item(i);
Debug.WriteLine("Хеш-код экземпляра кэша: " + Item.Hash + ". Дата последнего изменения: " + Item.Date.ToString);
Debug.Write("Вариант отображения (ключ): " + Item.DestinationKey.ToString + ". " +
"Пользовательская метка: " + Item.CustomValue);
If IsNull(Item.ParamValues) = False Then
Debug.WriteLine(". Параметров: " + Item.ParamValues.Count.ToString + '.');
Else
Debug.WriteLine(". Параметров нет.");
End If;
End For;
DimSS := Item.SelectionSet;
Debug.WriteLine("Отметка, по которой был сохранён экземпляр кэша.");
Debug.WriteLine("Измерения:");
Debug.Indent;
For Each DimS In DimSS Do
Debug.WriteLine(DimS.Dimension.Name + ". Отмечено: " + DimS.SelectedCount.ToString);
End For;
Debug.Unindent;
End Sub ShowCacheItems;
При выполнении примера для указанного куба будут получены экземпляры кэша. Информация об экземплярах будет выведена в консоль среды разработки.
См. также: