IMsBranchConditionInSelection.Negation

Синтаксис

Negation: Boolean;

Описание

Свойство Negation определяет, отрицается ли условие. True - условие отрицается (ветка условия будет рассчитана, если элемент не входит в отметку), False - условие не отрицается.

Пример

Для выполнения примера предполагается наличие в репозитории контейнера моделирования с идентификатором «CONT_MODEL». В данном контейнере должна содержаться метамодель с идентификатором «METAMODEL» и модели с идентификаторами «DEFAULT», «MODEL_1» и «MODEL_2». Также в репозитории должен находится справочник с идентификатором «D_SOURCE», содержащий группу элементов с идентификатором «DICT_GROUP».

Sub Main;

Var

pMetaModel: IMsMetaModel;

pBranch: IMsCalculationChainBranch;

pBranchConditions: IMsBranchConditions;

pCase: IMsBranchCase;

pCaseList: IMsBranchCaseList;

Chain, pDefaultContents: IMsCalculationChainEntries;

pCondSelect: IMsBranchConditionInSelection;

pCondGroup: IMsBranchConditionInGroup;

pCondScalar: IMsBranchConditionScalar;

Case_1, Case_2, Case_default: IMsModel;

mb: IMetabase;

pModelSpace: IMetabaseObjectDescriptor;

param:IMsModelParam;

pDimInstance: IDimInstance;

pSelection: IDimSelection;

params:IMsModelParams;

Begin

mb := MetabaseClass.Active;

pModelSpace := mb.ItemById("CONT_MODEL");

pMetaModel := mb.ItemByIdNamespace("METAMODEL", pModelSpace.Key).Edit As IMsMetaModel;

Chain := pMetaModel.CalculationChain;

Chain.Clear;

 

// Задаем параметр метамодели

params:=pMetaModel.Params;

params.Clear;

param:=params.Add;

param.DataType := DbDataType.Integer;

param.DefaultValue := 1;

param.Hidden := True;

param.Id := "T_ID";

param.Name := "ID";

param.LinkedObject := mb.ItemById("D_SOURCE");

 

// Создаем вершину условия

pBranch := Chain.AddBranch("Branch");

pBranch.Parameter := Param;

pDefaultContents := pBranch.DefaultContents;

Case_default := mb.ItemByIdNamespace("DEFAULT", pModelSpace.Key).Bind As IMsModel;

pDefaultContents.AddModel(Case_default);

 

// Создаем первую ветку условия

pCaseList := pBranch.CaseList;

pCase := pCaseList.Add;

Case_1 := mb.ItemByIdNamespace("MODEL_1", pModelSpace.Key).Bind As IMsModel;

pCase.Contents.AddModel(Case_1);

pBranchConditions := pCase.Conditions;

pCondScalar := pBranchConditions.Add(MsBranchConditionType.Scalar) As IMsBranchConditionScalar;

pCondScalar.ComparisonOperator := MsBranchConditionComparisonOperator.Equal;

pCondScalar.Value := 6;

 

pCondGroup := pBranchConditions.Add(MsBranchConditionType.InGroup) As IMsBranchConditionInGroup;

pDimInstance := mb.ItemById("D_SOURCE").Open(Null) As IDimInstance;

pCondGroup.ElementGroup := mb.ItemByIdNamespace("DICT_GROUP", pDimInstance.Key).Bind As IDimElementGroup;

pCondGroup.Negation := False;

pCondGroup.ConditionJoin := OrmLogicalOperator.Or_;

 

// Создаем вторую ветку условия

pCase := pCaseList.Add;

Case_2 := mb.ItemByIdNamespace("MODEL_2", pModelSpace.Key).Bind As IMsModel;

pCase.Contents.AddModel(Case_2);

pBranchConditions := pCase.Conditions;

pCondSelect := pBranchConditions.Add(MsBranchConditionType.InSelection) As IMsBranchConditionInSelection;

pSelection := pDimInstance.CreateSelection;

pSelection.DeselectAll;

pSelection.SelectElement(2, False);

pCondSelect.Negation := False;

pCondSelect.Selection := pSelection;

 

(pMetaModel As IMetabaseObject).Save;

End Sub Main;

После выполнения примера для метамодели будет задан параметр, ссылающийся на справочник, и условие, основанное на значении данного параметра. Условие состоит в следующем: если значение параметра равно шести или входит в группу элементов справочника, тогда будет рассчитываться модель «MODEL_1»; если значение параметра входит в отметку справочника, то будет рассчитываться модель «MODEL_2»; если ни одно из данных условий не выполняется, то будет рассчитываться модель «DEFAULT».

См. также:

IMsBranchConditionInSelection