IMsAggregationFilter.AggregationSelection

Синтаксис

AggregationSelection: IDimSelection ;

Описание

Свойство AggregationSelection определяет отметку, используемую для задания агрегируемых элементов. Значения свойств IMsAggregationFilter.AggregationGroup и IMsAggregationFilter.AggregationParamID сбрасываются, если данному свойству присваивается значение.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «FC». В контейнере моделирования данной базы должна присутствовать модель с идентификатором «MODEL_AGGR», рассчитываемая методом расширенной агрегации. «COUNTRY» (страна) - атрибут показателей базы, ссылающийся на справочник.

Также необходимо добавить ссылки на системные сборки «Metabase», «Ms», «Cubes», «Dimensions», «Rds».

Sub UserProc;

Var

mb: IMetabase;

RubrDescr: IMetabaseObjectDescriptor;

Rubr: IRubricator;

msDescr: IMetabaseObjectDescriptor;

Model: IMsModel;

Transform: IMsFormulaTransform;

Formula: IMsFormula;

Aggr: IMsCrossDimensionAggregationTransform;

FiltesList: IMsAggregationFilterList;

Filter: IMsAggregationFilter;

i: Integer;

Attributes: IMetaAttributes;

DictDescr: IMetabaseObjectDescriptor;

FilterDimension: IMetabaseObject;

DimInst: IDimInstance;

Selection: IDimSelection;

Begin

mb := MetabaseClass.Active;

RubrDescr := mb.ItemById("FC");

Rubr := RubrDescr.Bind As IRubricator;

msDescr := Rubr.ModelSpace;

Model := mb.ItemByIdNamespace("MODEL_AGGR", msDescr.Key).Edit As IMsModel;

Transform := Model.Transform;

Formula := Transform.FormulaItem(0);

Aggr := Formula.Method As IMsCrossDimensionAggregationTransform;

FiltesList := Aggr.Filter;

Attributes := Rubr.Facts.Attributes;

DictDescr := Attributes.FindById("COUNTRY").ValuesObject;

Filter := FiltesList.Add(DictDescr.Bind As IDimensionModel);

FilterDimension := Filter.FilterDimension As IMetabaseObject;

DimInst := FilterDimension.Open(Null) As IDimInstance;

Selection := DimInst.CreateSelection;

For i := 0 To 5 Do

Selection.SelectElement(i, False);

End For;

Filter.AggregationSelection := Selection;

Debug.WriteLine("ФИЛЬТРЫ АГРЕГАЦИИ");

For i := 0 To FiltesList.Count - 1 Do

Filter := FiltesList.Item(i);

Debug.WriteLine("  Наименование фильтра: " + Filter.Name);

Debug.WriteLine("  Отметка фильтра: " + Filter.AggregationSelection.ToString);

End For;

(Model As IMetabaseObject).Save;

End Sub UserProc;

После выполнения примера в модель расширенной агрегации будет добавлен новый фильтр: рассчитывать агрегацию только для шести первых элементов справочника, на который ссылается атрибут «COUNTRY». Затем в окно консоли будет выведена информация о всех фильтрах модели.

См. также:

IMsAggregationFilter