Condition: IExpression;
Свойство Condition возвращает выражение, по которому осуществляется фильтрация данных для измерения.
Для определения, будут ли для измерения использоваться настройки фильтрации, используйте IPivotDimensionFilterSettings.UseCondition.
Для задания выражения в виде символьной строки используйте IExpression.AsString.
Если в формуле присутствует параметр, то перед параметром ставится символ «:». Например, формула имеет вид: AttributeId >= :ParameterId, где:
AttributeId. Идентификатор атрибута справочника;
ParametrId. Идентификатор параметра отчёта.
Для выполнения примера предполагается наличие в репозитории экспресс-отчета с идентификатором EXPRESS_FILTER. Источником данных является куб. Первое измерение имеет атрибут с идентификатором ORDER.
Добавьте ссылки на системные сборки: Dal, Express, Metabase, Pivot.
Sub UserProc;
Var
MB: IMetabase;
Express: IEaxAnalyzer;
Pivot: IPivot;
Dim: IPivotDimension;
Filter: IPivotDimensionFilterSettings;
Param: IMetabaseObjectParam;
Begin
MB := MetabaseClass.Active;
Express := MB.ItemById("EXPRESS_FILTER").Edit As IEaxAnalyzer;
// Добавим параметр
Param := (Express As IMetabaseObject).Params.Add;
Param.DataType := DbDataType.Integer;
Param.Name := "ParamExp";
Param.Id := "ParamExp";
Param.DefaultValue := 2;
// Получим настройки отображения таблицы данных отчета
Pivot := Express.Pivot;
// Получим измерение
Dim := Pivot.Dimensions.Item(0);
// Получим настройки фильтрации для измерения
Filter := Dim.Settings.Filter;
// Зададим выражение, по которому будет осуществляться фильтрация
Filter.UseCondition := True;
Filter.Condition.AsString := "Order>:ParamExp";
Filter.KeepParent := True;
// Сохраним изменения
(Express As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера для отчёта будет создан новый параметр. Для первого измерения в таблице будет задано выражение для фильтрации данных с использованием данного параметра.
См. также: