CumulativeMethod: MsCumulativeMethodType;
Свойство CumulativeMethod определяет метод накопления.
Для выполнения примера предполагается наличие в репозитории контейнера моделирования с идентификатором «CONT_MODEL». В данном контейнере моделирования должна присутствовать модель с идентификатором «MODEL_CUMULATIVE» и переменная с идентификатором «VAR_CUMULATIVE».
Добавьте ссылки на системные сборки «Metabase», «Ms», «Cubes».
Sub UserProc;
Var
ActiveMetabase: IMetabase;
ModelCont, Descript: IMetabaseObjectDescriptor;
Obj: IMetabaseObject;
Model: IMsModel;
Transform: IMsFormulaTransform;
TransformVar: IMsFormulaTransformVariable;
Coord: IMsFormulaTransformCoord;
Slice: IMsFormulaTransformSlice;
Selector: IMsFormulaTransformSelector;
Formula: IMsFormula;
CumTr: IMsCumulativeTransform;
trInfo: IMsFormulaTermInfo;
Term: IMsFormulaTerm;
Obj_x1: IMetabaseObject;
ModelVar_x1: IMsVariable;
Calcul: IMsMethodCalculation;
Begin
ActiveMetabase := MetabaseClass.Active;
ModelCont := ActiveMetabase.ItemById("CONT_MODEL");
Descript := ActiveMetabase.ItemByIdNamespace("MODEL_CUMULATIVE", ModelCont.Key);
Obj := Descript.Edit;
Model := Obj As IMsModel;
Model.CalculationPeriod := MsCalculationPeriod.Both;
Descript := ActiveMetabase.ItemByIdNamespace("VAR_CUMULATIVE", ModelCont.Key);
Obj_x1 := Descript.Bind;
ModelVar_x1 := Obj_x1 As IMsVariable;
Transform := Model.Transform;
TransformVar := Transform.Outputs.Item(0);
Transform.Outputs.Clear;
TransformVar := Transform.Outputs.Add(ModelVar_x1 As IVariableStub);
Coord := Transform.CreateCoord(TransformVar);
Slice := TransformVar.Slices.Add(Null);
Selector := Transform.CreateSelector;
Selector.Slice := Slice;
Formula := Transform.Transform(Selector);
Formula.Kind := MsFormulaKind.Cumulative;
CumTr := Formula.Method As IMsCumulativeTransform;
Transform.Inputs.Clear;
TransformVar := Transform.Inputs.Add(ModelVar_x1 As IVariableStub);
TransformVar := Transform.Inputs.Item(0);
Slice := TransformVar.Slices.Add(Null);
trInfo := Transform.CreateTermInfo;
trInfo.Slice := Slice;
CumTr.CumulativeMethod := MsCumulativeMethodType.Max;
Term := CumTr.Result;
Debug.WriteLine(Term.TermToText);
CumTr.Input := trInfo;
calcul.Period.IdentificationStartDate := DateTime.ComposeDay(1990, 01, 01);
calcul.Period.IdentificationEndDate := DateTime.ComposeDay(2008, 12, 31);
calcul.Period.ForecastStartDate := DateTime.ComposeDay(2009, 01, 01);
calcul.Period.ForecastEndDate := DateTime.ComposeDay(2010, 12, 31);
Calcul := Model.CreateCalculation As IMsMethodCalculation;
CumTr.Execute(Calcul, Coord);
Obj.Save;
End Sub UserProc;
После выполнения примера для модели будут установлены новые параметры, затем она будет рассчитана. В окно консоли будет выведено наименование результирующего ряда.
См. также: