IMDCalculationScheduledTask.SourceCalculation

Синтаксис

SourceCalculation: IMDCalculation;

Описание

Свойство SourceCalculation определяет многомерный расчет на сервере БД, который необходимо выполнить.

Комментарии

Для получения параметров многомерного расчета в уже существующей задаче используйте свойство IMDCalculationScheduledTask.LoadCalculationArgs.

Для установки параметров многомерного расчета используйте свойство IMDCalculationScheduledTask.SetCalculationArgs.

Пример

Для выполнения примера в репозитории предполагается наличие контейнера запланированных задач с идентификатором «Scheduled_Tasks_Cont» и многомерного расчета на сервере БД с идентификатором «MDCalc». Также необходимо добавить ссылки на системные сборки «Cube», «Fore» и «Metabase».

Sub Main;

Var

MB: IMetabase;

CreateInfo: IMetabaseObjectCreateInfo;

ScheduledTaskContObjD: IMetabaseObjectDescriptor;

TaskObj: IMetabaseObject;

Properties: IScheduledTaskProperties;

PeriodTimeOnly: IScheduledTaskPeriodOneTimeOnly;

MDCalc: IMDCalculation;

MDCalcTask: IMDCalculationScheduledTask;

MDCalcDescr: IMetabaseObjectDescriptor;

CalcArgs: IMDCalculationCalculateArgs;

MDTabInst:IMDCalculationInstance;

Begin

Mb := MetabaseClass.Active;

// Создаем задачу

CreateInfo := MB.CreateCreateInfo;

CreateInfo.Permanent := True;

ScheduledTaskContObjD := MB.ItemById("Scheduled_Tasks_Cont");

CreateInfo.Parent := ScheduledTaskContObjD;

CreateInfo.ClassId := MetabaseObjectClass.KE_CLASS_TASK_CALCULATEMDCALCULATION;

CreateInfo.Id := MB.GenerateId("MDCalcScheduledTask");

CreateInfo.Name := "Выполнение многомерного расчета на сервере БД";

TaskObj := MB.CreateObject(CreateInfo).Edit;

MDCalcTask := TaskObj As IMDCalculationScheduledTask;

// Задаем выполняемый многомерный расчет

MDCalcDescr := MB.ItemById("MDCalc");

MDCalc := MDCalcDescr.Bind As IMDCalculation;

MDCalcTask.SourceCalculation := MDCalc;

// Задаем параметры выполнения расчета

MDTabInst := MDCalcDescr.Open(Null) As IMDCalculationInstance;

CalcArgs := MDTabInst.CreateCalculateArgs;

CalcArgs.CleanType := MDCalculateArgsCleanType.Existing;

CalcArgs.UpdateType := MDCalculateArgsUpdateType.NotNull;

CalcArgs.Recursion := TriState.OnOption;

MDCalcTask.SetCalculationArgs(CalcArgs);

// Задаем периодичность выполнения

Properties := MDCalcTask.Properties;

PeriodTimeOnly := Properties.CreatePeriod(ScheduledTaskPeriodType.OneTimeOnly) As IScheduledTaskPeriodOneTimeOnly;

PeriodTimeOnly.StartMode := TaskPeriodOneTimeStartMode.Immediate; //Немедленно

Properties.Period := PeriodTimeOnly;

// Сохраняем задачу

TaskObj.Save;

End Sub Main;

После выполнения примера в контейнере запланированных задач будет создана задача по выполнению многомерного расчета на сервере БД. Для созданной задачи будет задана периодичность выполнения и установлены параметры выполнения расчета.

См. также:

IMDCalculationScheduledTask