ICubeCacheUpdateScheduledTask.SetSelection

Синтаксис Fore

SetSelection(Value: IDimSelectionSet);

Синтаксис Fore.NET

SetSelection(Value: Prognoz.Platform.Interop.Dimensions.IDimSelectionSet);

Параметры

Value. Отметка куба, в соответствии с которой будет осуществляться обновление кэша данных.

Описание

Метод SetSelection осуществляет установку отметки, в соответствии с которой будет выполняться обновление кэша данных для куба при выполнении задачи.

Пример Fore

Для выполнения примера понадобится куб с идентификатором «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(NullAs 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(12000);
    Properties.Period := Period;
    (ScheduledTask As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера в контейнере запланированных задач «SCHEDULED_TASK_CONTAINER» будет создана запланированная задача обновления кэша для куба «CUBE_ID» по указанному варианту отображения и заданной отметке. Задача будет выполняться ежемесячно в понедельник третьей недели месяца в 12:00.

Пример Fore.NET

Для выполнения примера понадобится куб с идентификатором «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(NullAs 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» по указанному варианту отображения и заданной отметке. Задача будет выполняться ежемесячно в понедельник третьей недели месяца во время, когда она была создана.

См. также:

ICubeCacheUpdateScheduledTask