IAlgorithmBaseExecutor.MsProblem

Синтаксис

MsProblem: IMsProblem;

Описание

Свойство MsProblem возвращает задачу моделирования, которая используется при расчёте алгоритма.

Пример

Для выполнения примера предполагается наличие в репозитории готового алгоритма расчёта с идентификатором ALGORITHM. В алгоритме расчёта должны содержаться настроенные объекты.

Добавьте ссылки на системные сборки: Algo, Metabase, Ms. Также добавьте ссылку на сборку, необходимую для работы с алгоритмом расчёта.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObjectDescriptor;
    Algo: ICalcObject;
    CalcAlgo: ICalcAlgorithm;
    BaseExecutor: IAlgorithmBaseExecutor;
    ParamValues: IAlgorithmParameterValues;
    MsProblem: IMsProblem;
    ProblemCalculation: IMsProblemCalculation;
    CalcSettings: IMsProblemCalculationSettings;
Begin
    MB := MetabaseClass.Active;
    // Алгоритм расчёта
    MObj := MB.ItemById("ALGORITHM");
    Algo := CalcObjectFactory.CreateCalcObject(MObj, True);
    CalcAlgo := Algo As ICalcAlgorithm;
    // Объект для расчёта задачи моделирования
    BaseExecutor := CalcAlgo As IAlgorithmBaseExecutor;
    // Параметры алгоритма расчёта
    ParamValues := BaseExecutor.ParamValues;
    ParamValues.StartDate := DateTime.ComposeDay(200011);
    ParamValues.EndDate := DateTime.ComposeDay(202011);
    // Способ обработки ошибок, которые могут возникнуть при расчёте
    BaseExecutor.ErrorState := SkipErrorState.Abort;
    // Получаем задачу моделирования, на основе которой строится алгоритм.
    // И рассчитываем её с настройками по умолчанию.
    MsProblem := BaseExecutor.MsProblem;
    Debug.WriteLine("Запуск задачи моделирования алгоритма: '" + MObj.Name + "'");
    CalcSettings := MsProblem.CreateCalculationSettings;
    ProblemCalculation := MsProblem.Calculate(CalcSettings);
    ProblemCalculation.Run;
    Debug.WriteLine("   Расчёт завершён.");
End Sub UserProc;

При выполнении примера для алгоритма расчёта будут заданы начало и окончание периода расчёта. Будет получена и запущена задача моделирования, которая используется алгоритмом. При возникновении какой-либо ошибки расчёт будет остановлен.

См. также:

IAlgorithmBaseExecutor