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(2000, 1, 1);
ParamValues.EndDate := DateTime.ComposeDay(2020, 1, 1);
// Способ обработки ошибок, которые могут возникнуть при расчёте
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;
При выполнении примера для алгоритма расчёта будут заданы начало и окончание периода расчёта. Будет получена и запущена задача моделирования, которая используется алгоритмом. При возникновении какой-либо ошибки расчёт будет остановлен.
См. также: