IsCalendarPointFixed: Boolean;
Свойство IsCalendarPointFixed возвращает признак того, определена ли календарная точка для точки останова.
Календарная точка определяется значением свойства IMsModelCalendarBreakpoint.CalendarPoint. Если она определена, то IsCalendarPointFixed возвращает значение True. Точка останова будет срабатывать только для указанной даты. Для сброса календарной точки используйте метод IMsModelCalendarBreakpoint.RemoveCalendarPointFix.
Если календарная точка не задана, то IsCalendarPointFixed возвращает значение False. Точка останова будет срабатывать для каждой календарной точки расчета.
Для выполнения примера предполагается наличие в репозитории контейнера моделирования с идентификатором MODEL_SPACE. В данном контейнере должна присутствовать задача моделирования с идентификатором PROBLEM, рассчитывающая модель с идентификатором MODEL. В примере используется класс MCallback, описание которого приведено в IMsProblemCalculationCallback.OnBreak.
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
Mb: IMetabase;
ModelSpaceDescr: IMetabaseObjectDescriptor;
Problem: IMsProblem;
CalcSettings: IMsProblemCalculationSettings;
CallBack: MCallback;
Calculation: IMsProblemCalculation;
Breakpoints: IMsBreakpoints;
Breakpoint: IMsBreakpoint;
CalendarBreakpoint: IMsModelCalendarBreakpoint;
Model: IMsModel;
Begin
Mb := MetabaseClass.Active;
ModelSpaceDescr := Mb.ItemById("MODEL_SPACE");
Problem := Mb.ItemByIdNamespace("PROBLEM", ModelSpaceDescr.Key).Edit As IMsProblem;
CalcSettings := Problem.CreateCalculationSettings;
CallBack := New MCallback.Create;
CalcSettings.Callback := CallBack;
CalcSettings.FactIncluded := True;
Calculation := Problem.Calculate(CalcSettings);
Breakpoints := Calculation.Breakpoints;
Breakpoints.Clear;
Breakpoint := Breakpoints.Add(MsBreakpointKind.ModelCalendar);
CalendarBreakpoint := Breakpoint As IMsModelCalendarBreakpoint;
CalendarBreakpoint.Name := "CalendarBreakpoint";
Model := Mb.ItemByIdNamespace("MODEL", ModelSpaceDescr.Key).Edit As IMsModel;
CalendarBreakpoint.Model := Model;
If CalendarBreakpoint.IsCalendarPointFixed Then
CalendarBreakpoint.RemoveCalendarPointFix;
End If;
Calculation.Run;
End Sub UserProc;
После выполнения примера для задачи будет установлена точка останова, срабатывающая для каждой календарной точки расчета модели.
См. также: