SetSelection(Value: IDimSelectionSet);
SetSelection(Value: Prognoz.Platform.Interop.Dimensions.IDimSelectionSet);
Value. Отметка куба, в соответствии с которой будет осуществляться обновление кэша данных.
Метод SetSelection осуществляет установку отметки, в соответствии с которой будет выполняться обновление кэша данных для куба при выполнении задачи.
Для выполнения примера понадобится куб с идентификатором «CUBE_ID» со включенной возможностью кэширования данных, а также контейнер запланированных задач с идентификатором «SCHEDULED_TASK_CONTAINER».
Sub UserProc;
Var
Metabase: IMetabase;
ScheduledTask: ICubeCacheUpdateScheduledTask;
CrInfo: IMetabaseObjectCreateInfo;
CubIn: ICubeInstance;
CubInDes: ICubeInstanceDestination;
DimS: IDimSelection;
DimSS: IDimSelectionSet;
Properties: IScheduledTaskProperties;
Period: IScheduledTaskPeriodMonthly;
i: Integer;
Begin
Metabase := MetabaseClass.Active;
CrInfo := Metabase.CreateCreateInfo;
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_TASK_UPDATE_CUBE_CACHE;
CrInfo.Parent := Metabase.ItemById("SCHEDULED_TASK_CONTAINER");
ScheduledTask := Metabase.CreateObject(CrInfo).Edit As ICubeCacheUpdateScheduledTask;
CubIn := Metabase.ItemById("CUBE_ID").Open(Null) As ICubeInstance;
CubInDes := CubIn.Destinations.DefaultDestination;
DimSS := CubInDes.CreateDimSelectionSet;
For Each DimS In DimSS Do
DimS.SelectAll;
End For;
ScheduledTask.SourceCube := CubIn.Cube;
ScheduledTask.DestKey := CubInDes.Key;
ScheduledTask.SetSelection(DimSS);
//Устанавливаем период выполнения задачи
Properties := ScheduledTask.Properties;
Period := Properties.CreatePeriod(ScheduledTaskPeriodType.Monthly) As IScheduledTaskPeriodMonthly;
Period.DayOfWeek := CalendarDayOfWeek.Monday;
Period.WeekOfMonth := CalendarWeekOfMonth.Third;
For i := 1 To 12 Do
Period.Months(i As CalendarMonth) := True;
End For;
Period.StartTime := DateTime.ComposeTimeOfDay(12, 0, 0, 0);
Properties.Period := Period;
(ScheduledTask As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера в контейнере запланированных задач «SCHEDULED_TASK_CONTAINER» будет создана запланированная задача обновления кэша для куба «CUBE_ID» по указанному варианту отображения и заданной отметке. Задача будет выполняться ежемесячно в понедельник третьей недели месяца в 12:00.
Для выполнения примера понадобится куб с идентификатором «CUBE_ID» со включенной возможностью кэширования данных, а также контейнер запланированных задач с идентификатором «SCHEDULED_TASK_CONTAINER».
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.KeFore;
Imports System;
Public Sub Main(Params: StartParams);
Var
Metabase: IMetabase;
ScheduledTask: ICubeCacheUpdateScheduledTask;
CrInfo: IMetabaseObjectCreateInfo;
CubIn: ICubeInstance;
CubInDes: ICubeInstanceDestination;
DimS: IDimSelection;
DimSS: IDimSelectionSet;
Properties: IScheduledTaskProperties;
Period: IScheduledTaskPeriodMonthly;
i: Integer;
Begin
Metabse := Params.Metabase;
CrInfo := Metabase.CreateCreateInfo();
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_TASK_UPDATE_CUBE_CACHE As Int32;
CrInfo.Parent := Metabase.ItemById["SCHEDULED_TASK_CONTAINER"];
ScheduledTask := Metabase.CreateObject(CrInfo).Edit() As ICubeCacheUpdateScheduledTask;
CubIn := Metabase.ItemById["CUBE_ID"].Open(Null) As ICubeInstance;
CubInDes := CubIn.Destinations.DefaultDestination;
DimSS := CubInDes.CreateDimSelectionSet();
For Each DimS In DimSS Do
DimS.SelectAll();
End For;
ScheduledTask.SourceCube := CubIn.Cube;
ScheduledTask.DestKey := CubInDes.Key;
ScheduledTask.SetSelection(DimSS);
//Устанавливаем период выполнения задачи
Properties := ScheduledTask.Properties;
Period := Properties.CreatePeriod(ScheduledTaskPeriodType.stptMonthly) As IScheduledTaskPeriodMonthly;
Period.DayOfWeek := CalendarDayOfWeek.dowMonday;
Period.WeekOfMonth := CalendarWeekOfMonth.womThird;
For i := 1 To 12 Do
Period.Months[i As CalendarMonth] := True;
End For;
Period.StartTime := DateTime.Now;
Properties.Period := Period;
(ScheduledTask As IMetabaseObject).Save();
End Sub;
После выполнения примера в контейнере запланированных задач «SCHEDULED_TASK_CONTAINER» будет создана запланированная задача обновления кэша для куба «CUBE_ID» по указанному варианту отображения и заданной отметке. Задача будет выполняться ежемесячно в понедельник третьей недели месяца во время, когда она была создана.
См. также: