BoundByData: Boolean;
Свойство BoundByData определяет, игнорировать ли даты начала (IMsSpliceFormulaTerm.StartDate) и окончания (IMsSpliceFormulaTerm.EndDate) совмещения ряда. True - даты игнорируются; False - даты не игнорируются и используются для совмещения рядов.
Для выполнения примера предполагается наличие в репозитории контейнера моделирования с идентификатором «TRANSFORMATION». В данном контейнере должны присутствовать стандартная модель с идентификатором «M_SPLICE» и переменные с идентификаторами «PRECED», «FOLLOW».
Sub Main;
Var
mb: IMetabase;
ModelCont: IMetabaseObjectDescriptor;
Descript: IMetabaseObjectDescriptor;
Obj: IMetabaseObject;
Model: IMsModel;
Transform: IMsFormulaTransform;
InputsVar: IMsFormulaTransformVariables;
TransformVar: IMsFormulaTransformVariable;
Slice: IMsFormulaTransformSlice;
Operands: IMsFormulaTermList;
x1, x2: IMsSpliceFormulaTerm;
Selector: IMsFormulaTransformSelector;
Formula: IMsFormula;
Splice: IMsSpliceTransform;
Obj_x1: IMetabaseObject;
ModelVar_x1: IMsVariable;
Obj_x2: IMetabaseObject;
ModelVar_x2: IMsVariable;
Begin
mb := MetabaseClass.Active;
ModelCont := mb.ItemById("TRANSFORMATION");
Descript := mb.ItemByIdNamespace("M_SPLICE", ModelCont.Key);
Obj := Descript.Edit;
Model := Obj As IMsModel;
// Настраиваем параметры модели
Transform := Model.Transform;
TransformVar := Transform.Outputs.Item(0);
Slice := TransformVar.Slices.Add(Null);
Selector := Transform.CreateSelector;
Selector.Slice := Slice;
Formula := Transform.Transform(Selector);
Formula.Level := DimCalendarLevel.Year;
Formula.Kind := MsFormulaKind.Splice;
Splice := Formula.Method As IMsSpliceTransform;
Splice.MethodType := MsSpliceType.Butt;
Splice.SpliceDirection := MsSpliceDirection.Both;
InputsVar := Transform.Inputs;
InputsVar.Clear;
// Добавляем первый совмещаемый ряд и задаем его параметры
Descript := mb.ItemByIdNamespace("PRECED", ModelCont.Key);
Obj_x1 := Descript.Bind;
ModelVar_x1 := Obj_x1 As IMsVariable;
InputsVar.Add(ModelVar_x1 As IVariableStub);
TransformVar := InputsVar.Item(0);
Slice := TransformVar.Slices.Add(Null);
Operands := Splice.Operands;
Operands.Clear;
x1 := Operands.Add(Slice) As IMsSpliceFormulaTerm;
x1.StartDate := DateTime.ComposeDay(2001, 1, 1);
x1.EndDate := DateTime.ComposeDay(2004, 1, 1);
x1.BoundByData := False;
// Добавляем второй совмещаемый ряд и задаем его параметры
Descript := mb.ItemByIdNamespace("FOLLOW", ModelCont.Key);
Obj_x2 := Descript.Bind;
ModelVar_x2 := Obj_x2 As IMsVariable;
InputsVar.Add(ModelVar_x2 As IVariableStub);
TransformVar := InputsVar.Item(1);
Slice := TransformVar.Slices.Add(Null);
x2 := Operands.Add(Slice) As IMsSpliceFormulaTerm;
x2.StartDate := DateTime.ComposeDay(2005, 1, 1);
x2.EndDate := DateTime.ComposeDay(2008, 1, 1);
x2.BoundByData := False;
Obj.Save;
End Sub Main;
После выполнения примера модель «M_SPLICE» будет осуществлять совмещение рядов «PRECED» (данные с 2001 по 2004 годы) и «FOLLOW» (данные с 2005 по 2008 годы).
См. также: