InvertSelection: Boolean;
Свойство InvertSelection определяет признак использования инвертированной отметки в фильтре агрегации при расчёте задачи моделирования.
Допустимые значения:
True. В фильтре агрегации используется инвертированная отметка. Агрегация выполняется по элементам, с которых снята отметка;
False. По умолчанию. В фильтре агрегации используется отметка, заданная с помощью свойства IMsAggregationFilter.AggregationSelection.
Свойство используется только для моделей вида «Агрегация (расширенная)».
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором CONT_MODEL, содержащего задачу моделирования с идентификатором PROBLEM. В задаче моделирования должна содержаться метамодель, в цепочке расчёта которой содержится модель с идентификатором MODEL. Для модели задайте вид «Агрегация (расширенная)» на панели «Параметры» и настройте фильтр на панели «Спецификация».
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
MB: IMetabase;
RubrDescr, Descr: IMetabaseObjectDescriptor;
Model: IMsModel;
Transform: IMsFormulaTransform;
Formula: IMsFormula;
FilterList: IMsAggregationFilterList;
Filter: IMsAggregationFilter;
Problem: IMsProblem;
Settings: IMsProblemCalculationSettings;
Calc: IMsProblemCalculation;
Aggr: IMsCrossDimensionAggregationTransform;
Method: IMsMethod;
Begin
MB := MetabaseClass.Active;
// Получим контейнер моделирования
RubrDescr := MB.ItemById("CONT_MODEL");
Descr := RubrDescr.EditDescriptor;
// Получим модель
Model := MB.ItemByIdNamespace("MODEL", Descr.Key).Edit As IMsModel;
// Получим задачу моделирования
Problem := MB.ItemByIdNamespace("PROBLEM", Descr.Key).EditTemporary As IMsProblem;
// Получим параметры модели
Transform := Model.Transform;
// Получим метод расчёта модели
Formula := Transform.FormulaItem(0);
// Получим параметры метода расчёта модели
Method := Formula.Method;
Aggr := Method As IMsCrossDimensionAggregationTransform;
// Получим фильтры агрегации
FilterList := Aggr.Filter;
// Выполним инверсию отметки для первого фильтра
Filter := FilterList.Item(0);
Filter.InvertSelection := True;
// Сохраним внесенные изменения
(Model As IMetabaseObject).Save;
// Рассчитаем задачу моделирования
Settings := Problem.CreateCalculationSettings;
Calc := Problem.Calculate(Settings);
Calc.Run;
End Sub UserProc;
В результате выполнения примера будет рассчитана задача моделирования, содержащаяся в ней метамодель и модель. При расчёте модели выполняется агрегация по заданному фильтру. Для первого измерения фильтра агрегация выполняется по инвертированной отметке.
См. также: