Selection: IDimSelectionSet;
Selection: Prognoz.Platform.Interop.Dimensions.IDimSelectionSet;
Свойство Selection возвращает отметку таблицы с учетом фильтрации.
Для получения отметки всех измерений всех источников данных отчёта используйте свойство IPivot.Selection.
Для выполнения примера в репозитории предполагается наличие экспресс-отчета с идентификатором «EXPRESS_FILTER». Отчет содержит таблицу.
Добавьте ссылки на системные сборки: Dimensions, Express, Metabase, Pivot.
Sub UserProc;
Var
MB: IMetabase;
Express: IEaxAnalyzer;
Pivot: IPivot;
PTable: IPivotTable;
DimSS: IDimSelectionSet;
Filter: IPivotFilter;
FilterSet: IPivotFilterSettings;
i: Integer;
Begin
// Получим доступ к репозиторию
MB := MetabaseClass.Active;
// Получим доступ к экспресс-отчету
Express := MB.ItemById("EXP_PTS").Edit As IEaxAnalyzer;
Pivot := Express.Pivot;
// Определим параметры фильтрации в таблице
Filter := Pivot.Filter;
FilterSet := Filter As IPivotFilterSettings;
// Включим параметры фильтрации для таблицы
FilterSet.Enabled := True;
// Будем использовать условие для фильтрации
FilterSet.UseCondition := True;
// Установим тип фильтрации
FilterSet.ConditionType := PivotFilterType.Expression;
// Зададим выражение
FilterSet.Condition.AsString := "Value<0";
// Получим таблицу
PTable := Pivot.ObtainTable;
// Выведем отметку таблицы с учетом фильтрации
DimSS := PTable.Selection;
For i := 0 To DimSS.Count - 1 Do
Debug.WriteLine(DimSS.Item(i).Dimension.Name);
Debug.WriteLine(DimSS.Item(i).ToString(Format := "NAME", Separator := ", ", CollectRanges := True));
Debug.WriteLine("");
End For;
// Сохраним изменения
(Express As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера в таблице экспресс-отчета будет осуществлена фильтрация данных. Будут отфильтрованы значения меньше нуля. В окно консоли будет выведена отметка.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Pivot;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Express: IEaxAnalyzer;
Pivot: IPivot;
PTable: IPivotTable;
DimSS: IDimSelectionSet;
Filter: IPivotFilter;
FilterSet: IPivotFilterSettings;
i: Integer;
Begin
// Получим доступ к репозиторию
MB := Params.Metabase;
// Получим доступ к экспресс-отчету
Express := MB.ItemById["EXP_PTS"].Edit() As IEaxAnalyzer;
Pivot := Express.Pivot;
// Определим параметры фильтрации в таблице
Filter := Pivot.Filter;
FilterSet := Filter As IPivotFilterSettings;
// Включим параметры фильтрации для таблицы
FilterSet.Enabled := True;
// Будем использовать условие для фильтрации
FilterSet.UseCondition := True;
// Установим тип фильтрации
FilterSet.ConditionType := PivotFilterType.pftExpression;
// Зададим выражение
FilterSet.Condition.AsString := "Value<0";
// Получим таблицу
PTable := Pivot.ObtainTable();
// Выведем параметры отметки таблицы с учетом фильтрации
DimSS := PTable.Selection;
For i := 0 To DimSS.Count - 1 Do
System.Diagnostics.Debug.WriteLine(DimSS.Item[i].Dimension.Name);
System.Diagnostics.Debug.WriteLine(DimSS.Item[i].ToString("NAME", ", ", True));
System.Diagnostics.Debug.WriteLine("");
End For;
// Сохраним изменения
(Express As IMetabaseObject).Save();
End Sub;
См. также: