SetCustomValue(Value: Variant);
SetCustomValue(Value: Object);
Value. Пользовательская метка, которую необходимо установить.
Метод SetCustomValue устанавливает пользовательскую метку для текущего экземпляра кэша.
Для выполнения примера предполагается наличие стандартного куба с идентификатором STD_CUBE. Для куба закэширован какой-либо набор данных.
Добавьте ссылки на системные сборки: Cubes, Metabase.
Sub UserProc;
Var
MB: IMetabase;
MDesc, CacheDesc: IMetabaseObjectDescriptor;
CacheSaver: ICubeCacheSaver;
Items: ICubeCacheItems;
Item: ICubeCacheItem;
Begin
MB := MetabaseClass.Active;
MDesc := MB.ItemById("STD_CUBE");
// Получение хранилища кэша
CacheDesc := GetCache(MDesc);
If CacheDesc <> Null Then
CacheSaver := CacheDesc.Bind As ICubeCacheSaver;
// Экземпляры кэша из СУБД
Items := CacheSaver.GetItemsFromDatabase;
If Items.Count > 0 Then
Item := Items.Item(0);
Debug.WriteLine(Item.CustomValue);
// Изменение метки для экземпляра кэша
Item.SetCustomValue("Change date: " + DateTime.Today.ToString);
End If;
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;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MDesc, CacheDesc: IMetabaseObjectDescriptor;
CacheSaver: ICubeCacheSaver;
Items: ICubeCacheItems;
Item: ICubeCacheItem;
Begin
MB := Params.Metabase;
MDesc := MB.ItemById["STD_CUBE"];
// Получение хранилища кэша
CacheDesc := GetCache(MDesc);
If CacheDesc <> Null Then
CacheSaver := CacheDesc.Bind() As ICubeCacheSaver;
// Экземпляры кэша из СУБД
Items := CacheSaver.GetItemsFromDatabase(uinteger.MaxValue, Null);
If Items.Count > 0 Then
Item := Items.Item[0];
System.Diagnostics.Debug.WriteLine(Item.CustomValue);
// Изменение метки для экземпляра кэша
Item.SetCustomValue("Change date: " + DateTime.Today.ToString());
End If;
End If;
End Sub;
Shared Function GetCache(MObj: IMetabaseObjectDescriptor): IMetabaseObjectDescriptor;
Var
Desc: IMetabaseObjectDescriptor;
i, c: integer;
Begin
c := MObj.Children.Count;
For i := 0 To c - 1 Do
Desc := MObj.Children.Item[i];
If Desc.ClassId = MetabaseObjectClass.KE_CLASS_CUBE_CACHE_SAVER As integer Then
Return Desc;
End If;
End For;
Return Null;
End Function;
При выполнении примера для указанного куба будут получены экземпляры кэша. Значение пользовательской метки для первого экземпляра будет выведено в консоль среды разработки. После этого пользовательская метка будет изменена.
См. также: