IMatrixQueryFilter.Values

Синтаксис

Values: IArrayList;

Описание

Свойство Values возвращает динамический массив элементов фильтра.

Пример

Для выполнения примера предполагается наличие куба с идентификатором CUBE.

Добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase.

Sub UserProc;
Var
    Mb: IMetabase;
    CubeDest: ICubeInstanceDestination;
    Executor: ICubeInstanceDestinationExecutor;
    Sels, ResSels: IDimSelectionSet;
    Sel: IDimSelection;
    Factory: IMatrixFactory;
    Matrix: IMatrix;
    Query: IMatrixQuery;
    Filter: IMatrixQueryFilter;
    Values: IArrayList;
    Result: IMatrixQueryResult;
Begin
    Mb := MetabaseClass.Active;
    // Открытие куба
    CubeDest := (Mb.ItemById("CUBE").Open(NullAs ICubeInstance).Destinations.DefaultDestination;
    Executor := CubeDest.CreateExecutor;
    // Создание отметки
    Sels := CubeDest.CreateDimSelectionSet;
    For Each Sel In Sels Do
        Sel.SelectAll;
    End For;
    // Получение матрицы с данными куба
    Executor.PrepareExecute(Sels);
    Executor.PerformExecuteO(CubeInstanceDestinationExecutorOptions.Cached);
    Matrix := Executor.Matrix;
    // Создание запроса
    Factory := New MatrixFactory.Create As IMatrixFactory;
    Query := Factory.CreateQuery(Matrix);
    Filter := Query.Filter;
    // Добавление значений для фильтрации данных
    Values := Filter.Values;
    Values.Add(1);
    Values.Add(3);
    Values.Add(5);
    // Отметка для фильтрации
    Filter.Selection := Sels;
    // Выполнение запроса
    Query.Execute;
    Result := Query.Result;
    Debug.WriteLine("Минимальное значение в отфильтрованной матрице: " + Result.MinValue.ToString);
    Debug.WriteLine("Максимальное значение в отфильтрованной матрице: " + Result.MaxValue.ToString);
    // Результирующая отметка, полученная путём изменения исходной отметки таким образом,
    // чтобы в матрице остались только данные из фильтра
    ResSels := CubeDest.CreateDimSelectionSet;
    Result.GetSelectionSet(ResSels);
    For Each Sel In ResSels Do
        Debug.WriteLine("Измерение: " + (Sel.Dimension.Dimension As IMetabaseObject).Id + ". Отмечено элементов: " + Sel.SelectedCount.ToString + " из " + Sel.Dimension.Elements.Count.ToString);
    End For;
End Sub UserProc;

При выполнении примера будет открыт куб и получена его матрица с данными по полной отметке. Будет создан запрос, получающий информацию о данных из матрицы, в запросе определён фильтр, отбирающий данные с определёнными значениями. После выполнения запроса будет получена отметка, которая соответствует матрице с отфильтрованными данными. Информация об отметке будет выведена в консоль среды разработки.

См. также:

IMatrixQueryFilter