Condition: IExpression;
Condition: Prognoz.Platform.Interop.ForeSystem.IExpression;
Свойство Condition возвращает формулу, по которой осуществляется фильтрация данных для измерения.
Для определения, будут ли для измерения использоваться настройки фильтрации, используйте IPivotDimensionFilterSettings.UseCondition.
Для задания выражения в виде символьной строки используйте IExpression.AsString.
Если в формуле присутствует параметр, то перед параметром ставится символ «:». Например, формула имеет вид: AttributeId >= :Parameter, где:
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";
// Сохраним изменения
(Express As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера для отчета будет создан новый параметр. Для первого измерения в таблице будет задано выражение для фильтрации данных с использованием данного параметра.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Pivot;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Express: IEaxAnalyzer;
Pivot: IPivot;
Dim: IPivotDimension;
Filter: IPivotDimensionFilterSettings;
Param: IMetabaseObjectParam;
Begin
MB := Params.Metabase;
Express := MB.ItemById["EXPRESS_FILTER"].Edit() As IEaxAnalyzer;
// Добавим параметр
Param := (Express As IMetabaseObject).Params.Add();
Param.DataType := DbDataType.ddtInteger;
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";
// Сохраним изменения
(Express As IMetabaseObject).Save();
End Sub;
См. также: