SourceProblem: IMsProblem;
SourceProblem: Prognoz.Platform.Interop.Ms.MsProblem;
Свойство SourceProblem определяет задачу моделирования, рассчитываемую задачей в контейнере запланированных задач.
Одна задача в контейнере запланированных задач может рассчитывать только одну задачу моделирования. Для расчёта нескольких задач моделирования используйте несколько задач в контейнере запланированных задач.
Для выполнения примера в репозитории предполагается наличие:
Контейнера запланированных задач с идентификатором SCHEDULEDTASKSCONTAINER.
Контейнера моделирования с идентификатором MS, содержащим задачу моделирования с идентификатором PROBLEM_ADV.
Добавьте ссылки на системные сборки: Fore, Metabase, Ms.
Sub UserProc;
Var
mb: IMetabase;
CrInf: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Exe: ICalculateModelScheduledTask;
Per: IScheduledTaskPeriodDaily;
Prop: IScheduledTaskProperties;
Begin
// Получаем текущий репозиторий
mb := MetabaseClass.Active;
// Создаём задачу в контейнере запланированных задач
CrInf := mb.CreateCreateInfo;
CrInf.ClassId := MetabaseObjectClass.KE_CLASS_TASK_CALCULATEMODEL;
CrInf.Id := mb.GenerateId("MODELLING_TASK", mb.GetObjectKeyById("SCHEDULEDTASKSCONTAINER"));
CrInf.Name := "Расчёт задачи моделирования";
CrInf.Parent := mb.ItemById("SCHEDULEDTASKSCONTAINER");
MObj := mb.CreateObject(CrInf).Edit;
// Указываем, что задача будет рассчитывать задачу моделирования
Exe := MObj As ICalculateModelScheduledTask;
// Указываем рассчитываемую задачу моделирования
Exe.SourceProblem := mb.ItemByIdNamespace("PROBLEM_ADV", mb.ItemById("MS").Key).Bind As IMsProblem;
// Задаём периодичность расчёта задачи
Prop := Exe.Properties;
Per := Prop.CreatePeriod(ScheduledTaskPeriodType.Daily) As IScheduledTaskPeriodDaily;
Per.StartDateTime := DateTime.Now;
Prop.Period := Per;
// Сохраняем изменения
MObj.Save;
End Sub UserProc
В результате выполнения примера в контейнере запланированных задач будет создана задача, выполняющая расчёт задачи моделирования.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
CrInf: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Exe: ICalculateModelScheduledTask;
Per: IScheduledTaskPeriodDaily;
Prop: IScheduledTaskProperties;
Begin
// Получаем текущий репозиторий
mb := Params.Metabase;
// Создаём задачу в контейнере запланированных задач
CrInf := mb.CreateCreateInfo();
CrInf.ClassId := MetabaseObjectClass.KE_CLASS_TASK_CALCULATEMODEL As integer;
CrInf.Id := mb.GenerateId("MODELLING_TASK", mb.GetObjectKeyById("SCHEDULEDTASKSCONTAINER"));
CrInf.Name := "Расчёт задачи моделирования";
CrInf.Parent := mb.ItemById["SCHEDULEDTASKSCONTAINER"];
MObj := mb.CreateObject(CrInf).Edit();
// Указываем, что задача будет рассчитывать задачу моделирования
Exe := MObj As ICalculateModelScheduledTask;
// Указываем рассчитываемую задачу моделирования
Exe.SourceProblem := mb.ItemByIdNamespace["PROBLEM_ADV", mb.ItemById["MS"].Key].Bind() As MsProblem;
// Задаём периодичность расчёта задачи
Prop := Exe.Properties;
Per := Prop.CreatePeriod(ScheduledTaskPeriodType.stptDaily) As IScheduledTaskPeriodDaily;
Per.StartDateTime := DateTime.Now;
Prop.Period := Per;
// Сохраняем изменения
MObj.Save();
End Sub;
См. также: