ICubeCacheSaver.GetItemsFromDatabase

Синтаксис

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;

При выполнении примера для указанного куба будут получены экземпляры кэша. Информация об экземплярах будет выведена в консоль среды разработки.

См. также:

ICubeCacheSaver