Months(Index: CalendarMonth): Boolean;
Index. A month for which it is necessary to determine whether the calculation took place.
The Months property determines whether the calculation should be performed in the month, index of which is determined by the Index property. If the property is set to True, the calculation is performed.
Executing the example requires that the repository contains a scheduled tasks container with the TASK_CONTAINTER identifier and a module with the Module_1 identifier. The module contains the Main procedure.
Sub Main;
Var
MB: IMetabase;
CrInfo: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Exe: IExecuteSubScheduledTask;
Per: IScheduledTaskPeriodMonthly;
Prop: IScheduledTaskProperties;
i: Integer;
Begin
MB := MetabaseClass.Active;
CrInfo := MB.CreateCreateInfo;
CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_TASK_EXECUTESUB;
CrInfo.Id := "MODULE_EXECUTOR";
CrInfo.Name := "Module execution";
CrInfo.Parent := MB.ItemById("TASK_CONTAINTER");
MObj := MB.CreateObject(CrInfo).Edit;
Exe := MObj As IExecuteSubScheduledTask;
Exe.Assembly := (MB.ItemById("Module_1").Bind As IModule).Assembly;
Exe.SubName := "Main";
Prop := Exe.Properties;
Per := Prop.CreatePeriod(ScheduledTaskPeriodType.Monthly) As IScheduledTaskPeriodMonthly;
Per.DayOfWeek := CalendarDayOfWeek.Monday;
Per.WeekOfMonth := CalendarWeekOfMonth.Third;
For i := 1 To 12 Do
Per.Months(i As CalendarMonth) := True;
End For;
Per.StartTime := DateTime.ComposeTimeOfDay(12, 0, 0, 0);
Prop.Period := Per;
MObj.Save;
End Sub Main;
After executing the example a new task of module execution is created in the scheduled tasks container. Module will be launched every third Monday of the month at 12:00.
See also: