IMsCumulativeTransform.CumulativeMethod

Синтаксис Fore

CumulativeMethod: MsCumulativeMethodType;

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

CumulativeMethod: Prognoz.Platform.Interop.Ms.MsCumulativeMethodType;

Описание

Свойство CumulativeMethod определяет метод накопления.

Комментарии

По умолчанию свойство имеет значение MsCumulativeMethodType.Average.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS». В данном контейнере моделирования должна присутствовать модель накопления с идентификатором «MODEL_CUMULATIVE».

Добавьте ссылки на системные сборки: Dimensions, Cubes, Ms, Metabase.

Sub UserProc;
Var
    mb: IMetabase;
    ModelCont: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    TransformVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    Formula: IMsFormula;
    CumTr: IMsCumulativeTransform;
    trInfo: IMsFormulaTermInfo;
    DataSC: IVariableStub;
    Calcul: IMsModelCalculation;
    SelSetFactory: IDimSelectionSetFactory;
    SelSet: IDimSelectionSet;
    Sel: IDimSelection;
    i: Integer;
    ResultVals: Array Of Double;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем контейнер моделирования
    ModelCont := mb.ItemById("MS");
    // Получаем модель накопления
    Model := mb.ItemByIdNamespace("MODEL_CUMULATIVE", ModelCont.Key).Edit As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    Formula := Transform.FormulaItem(0);
    CumTr := Formula.Method As IMsCumulativeTransform;
    // Заменяем входную переменную
    Transform.Inputs.Clear;
    DataSC := (ModelCont.Bind As IMsModelSpace).DefaultObject As IVariableStub;
    TransformVar := Transform.Inputs.Add(DataSC);
    SelSetFactory := New DimSelectionSetFactory.Create;
    SelSet := SelSetFactory.CreateDimSelectionSet;
    For i := 0 To DataSC.DimensionCount - 1 Do
        Sel := SelSet.Add((DataSC.Dimension(i) As IMetabaseObject).Open(NullAs IDimInstance);
        Sel.SelectElement(2False);
    End For;
    Slice := TransformVar.Slices.Add(SelSet);
    trInfo := Transform.CreateTermInfo;
    trInfo.Slice := Slice;
    CumTr.Input := trInfo;
    // Задаем метод накопления
    CumTr.CumulativeMethod := MsCumulativeMethodType.Median;
    // Создаем параметры расчета    
    calcul := Model.CreateCalculation;
    calcul.Period.IdentificationStartDate := Transform.Period.IdentificationStartDate;
    calcul.Period.IdentificationEndDate := Transform.Period.IdentificationEndDate;
    calcul.Period.ForecastStartDate := Transform.Period.ForecastStartDate;
    calcul.Period.ForecastEndDate := Transform.Period.ForecastEndDate;
    // Получаем и выводим значения моделируемой переменной
    ResultVals := CumTr.Result.Serie(Calcul As IMsMethodCalculation);
    For i := 0 To ResultVals.Length - 1 Do
        Debug.WriteLine(ResultVals[i]);
    End For;
    // Сохраняем модель
    (Model As IMetabaseObject).Save;
End Sub UserProc;

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

Пример Fore.NET

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

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

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    ModelCont: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    TransformVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    Formula: IMsFormula;
    CumTr: IMsCumulativeTransform;
    trInfo: IMsFormulaTermInfo;
    DataSC: IVariableStub;
    Calcul: IMsModelCalculation;
    SelSetFactory: IDimSelectionSetFactory;
    SelSet: IDimSelectionSet;
    Sel: IDimSelection;
    i: Integer;
    ResultVals: System.Array;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем контейнер моделирования
    ModelCont := mb.ItemById["MS"];
    // Получаем модель накопления
    Model := mb.ItemByIdNamespace["MODEL_CUMULATIVE", ModelCont.Key].Edit() As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    Formula := Transform.FormulaItem[0];
    CumTr := Formula.Method As IMsCumulativeTransform;
    // Заменяем входную переменную
    Transform.Inputs.Clear();
    DataSC := (ModelCont.Bind() As IMsModelSpace).DefaultObject As IVariableStub;
    TransformVar := Transform.Inputs.Add(DataSC);
    SelSetFactory := New DimSelectionSetFactory.Create();
    SelSet := SelSetFactory.CreateDimSelectionSet();
    For i := 0 To DataSC.DimensionCount - 1 Do
        Sel := SelSet.Add((DataSC.Dimension[i] As IMetabaseObject).Open(NullAs IDimInstance);
        Sel.SelectElement(2False);
    End For;
    Slice := TransformVar.Slices.Add(SelSet);
    trInfo := Transform.CreateTermInfo();
    trInfo.Slice := Slice;
    CumTr.Input := trInfo;
    // Задаем метод накопления
    CumTr.CumulativeMethod := MsCumulativeMethodType.mcmtMedian;
    // Создаем параметры расчета    
    calcul := Model.CreateCalculation();
    calcul.Period.IdentificationStartDate := Transform.Period.IdentificationStartDate;
    calcul.Period.IdentificationEndDate := Transform.Period.IdentificationEndDate;
    calcul.Period.ForecastStartDate := Transform.Period.ForecastStartDate;
    calcul.Period.ForecastEndDate := Transform.Period.ForecastEndDate;
    // Получаем и выводим значения моделируемой переменной
    ResultVals := CumTr.Result.Serie[Calcul As IMsMethodCalculation];
    For i := 0 To ResultVals.Length - 1 Do
        System.Diagnostics.Debug.WriteLine(ResultVals[i]);
    End For;
    // Сохраняем модель
    (Model As IMetabaseObject).Save();
End Sub;

См. также:

IMsCumulativeTransform