IAlgorithmCalculationExecutor.Run

Синтаксис

Run: IAlgorithmCalculationResult;

Отсутствует;

Описание

Метод Run осуществляет расчёт алгоритма.

Пример

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

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

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObjectDescriptor;
    Algo: ICalcObject;
    CalcAlgo: ICalcAlgorithm;
    CalcAlgoExecuter: IAlgorithmCalculationExecutor;
    HasCalcBlocks: Boolean;
    CalcObject: ICalcObject;
    i: Integer;
    CalcResult: IAlgorithmCalculationResult;
Begin
    MB := MetabaseClass.Active;
    
// Получим алгоритм расчёта
    MObj := MB.ItemById("ALGORITHM");
    Algo := CalcObjectFactory.CreateCalcObject(MObj, 
True);
    CalcAlgo := Algo 
As ICalcAlgorithm;
    
// Создадим объект для проверки наличия объектов расчёта по их типу
    CalcAlgoExecuter := CalcObjectFactory.CreateCalculationExecutor(MObj);
    HasCalcBlocks := CalcAlgoExecuter.HasObjectByType(CalcObjectType.CalcBlock);
    Debug.WriteLine(
"Признак наличия в алгоритме блоков расчёта: " + HasCalcBlocks.ToString);
    
// Если в аглоритме есть блоки расчёта, то выводим список их имён в консоль и рассчитываем алгоритм
    If HasCalcBlocks Then
        Debug.WriteLine(
"Список имён блоков расчёта алгоритма:");
        
For i := 0 To CalcAlgo.Items.Count - 1 Do
            CalcObject := CalcAlgo.Items(i);
            
If CalcObject.Type = CalcObjectType.CalcBlock Then
                Debug.WriteLine(
"  " + i.ToString + ") " + (CalcObject As ICalcBlock).Name);
            
End If;
        
End For;
        Debug.WriteLine(
"Прозведём расчёт алгоритма:");
        CalcResult := CalcAlgoExecuter.Run;
        Debug.WriteLine(
"  Расчёт завершён за " + CalcResult.TotalElapsedMilliseconds.ToString + " мс.");
    
End If;
End Sub UserProc;

Не предусмотрен.

При выполнении будет проверено наличие блоков расчёта в алгоритме. Если блоки расчёта имеются, от их имена будут выведены в консоль среды разработки и после этого алгоритм будет рассчитан.

См. также:

IAlgorithmCalculationExecutor