IMsProblemCalculationCallback.OnBreak

Синтаксис Fore

OnBreak(Breakpoint: IMsBreakpoint);

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

OnBreak(Breakpoint: Prognoz.Platform.Interop.Ms.IMsBreakpoint);

Параметры

Breakpoint. Точка останова, сгенерировавшая событие.

Описание

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

Комментарии

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

Пример Fore

В примере приведено описание пользовательского класса, являющегося обработчиком событий. Для выполнения примера добавьте ссылку на системную сборку «Ms».

Class MCallback: ProblemCalculationCallback
    Public Sub OnError(Message: String);
    Begin
    End Sub OnError;
    
    Public Sub OnFinish;
    Begin
    End Sub OnFinish;
    
    Public Sub OnMessage(Message: String);
    Begin
        Debug.WriteLine(DateTime.Now.ToString + " > " + Message);
    End Sub OnMessage;
    
    Public Sub OnModelCalculation(Model: IMsModel);
    Begin
    End Sub OnModelCalculation;
    
    Public Sub OnStep;
    Begin
    End Sub OnStep;
    
    Public Sub OnBreak(Breakp: IMsBreakpoint);
    Var
        CalendBreak: IMsModelCalendarBreakpoint;
        DataBreak: IMsDataBreakpoint;
    Begin
        Debug.WriteLine("Сработала точка останова!");
        Debug.WriteLine("    Ключ точки: '" + Breakp.Key.ToString + "'");
        Debug.WriteLine("    Наименование точки: '" + Breakp.Name + "'");
        Select Case Breakp.Kind
            Case MsBreakpointKind.ModelCalendar:
                Debug.WriteLine("    Точка календарная");
                CalendBreak := Breakp As IMsModelCalendarBreakpoint;
                If CalendBreak.IsCalendarPointFixed Then
                    Debug.WriteLine("    Дата срабатывания: " + CalendBreak.CalendarPoint.ToString);
                Else
                    Debug.WriteLine("    Точка срабатывает на каждую дату расчета");
                End If;
            Case MsBreakpointKind.Data:
                Debug.WriteLine("    Точка на значение в данных");
                DataBreak := Breakp As IMsDataBreakpoint;
                Debug.WriteLine("    Условие срабатывания: " + DataBreak.Condition.AsString);
        End Select;
    End Sub OnBreak;
End Class MCallback;

Использование данного класса для обработки событий приведено в описании IMsModelCalendarBreakpoint.CalendarPoint.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Ms;

Public Class MCallback: IMSProblemCalculationCallback
    
    Public Sub OnBreak(Breakp: IMsBreakpoint);
    Var
        CalendBreak: IMsModelCalendarBreakpoint;
        DataBreak: IMsDataBreakpoint;
    Begin
        System.Diagnostics.Debug.WriteLine("Сработала точка останова!");
        System.Diagnostics.Debug.WriteLine("    Ключ точки: '" + Breakp.Key.ToString() + "'");
        System.Diagnostics.Debug.WriteLine("    Наименование точки: '" + Breakp.Name + "'");
        Select Case Breakp.Kind
            Case MsBreakpointKind.mbkModelCalendar:
                System.Diagnostics.Debug.WriteLine("    Точка календарная");
                CalendBreak := Breakp As IMsModelCalendarBreakpoint;
                If CalendBreak.IsCalendarPointFixed Then
                    System.Diagnostics.Debug.WriteLine("    Дата срабатывания: " +
                        CalendBreak.CalendarPoint.ToString());
                Else
                    System.Diagnostics.Debug.WriteLine("    Точка срабатывает на каждую дату расчета");
                End If;
            Case MsBreakpointKind.mbkData:
                System.Diagnostics.Debug.WriteLine("    Точка на значение в данных");
                DataBreak := Breakp As IMsDataBreakpoint;
                System.Diagnostics.Debug.WriteLine("    Условие срабатывания: " +
                    DataBreak.Condition.AsString);
        End Select;
    End Sub OnBreak;
    
    Public Sub OnMessage(Message: String);
    Begin
        System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString() + " > " + Message);
    End Sub OnMessage;
    Public Sub OnError(Message: String);
    
    Begin
    End Sub OnError;
    
    Public Sub OnFinish();
    Begin
    End Sub OnFinish;
    
    Public Sub OnModelCalculation(Model: IMsModel);
    Begin
    End Sub OnModelCalculation;
    
    Public Sub OnStep();
    Begin
    End Sub OnStep;
    
    Public Sub OnWarning(Message: string);
    Begin
    End Sub OnWarning;
    
    Public Sub OnStageStart(Stage: MsProblemCalculationStage; Data: object);
    Begin
    End Sub OnStageStart;
    
    Public Sub OnStageFinish(Stage: MsProblemCalculationStage; Duration: Integer; Data: object);
    Begin
    End Sub OnStageFinish;
    
    Public Sub OnBeforeSaveData(Stub: IVariableStub; Matrix: IMatrix; var ValueFlag: integer; Var Cancel: boolean);
    Begin
    End Sub OnBeforeSaveData;

    Public Sub OnSaveData(Stub: IVariableStub; Matrix: IMatrix; ValueFlag: integer; AuditRecordKey: object);
    Begin
    End Sub OnSaveData;
        
End Class MCallback;

См. также:

IMsProblemCalculationCallback