CreateQuery(Value: IMatrix): IMatrixQuery;
Value. Матрица, для которой будет создан запрос.
Метод CreateQuery создает запрос на получение информации о существующих данных в указанной матрице.
Для выполнения примера предполагается наличие базы данных временных рядов с идентификатором «CUBE».
Добавьте ссылки на системные сборки Metabase, Matrix, Dimensions, Cubes.
Sub Main;
Var
Mb: IMetabase;
ObjDes: IMetabaseObjectDescriptor;
CubDest: ICubeInstanceDestination;
Sels, SelsAll: IDimSelectionSet;
sDim: String;
Ei: Integer;
Sel: IDimSelection;
Matrix, MatrixRes: IMatrix;
MatFac: MatrixFactory;
Query: IMatrixQuery;
Filter: IMatrixQueryFilter;
ArList: IArrayList;
Result: IMatrixQueryResult;
Ranges: IMatrixQueryFilterRanges;
Range: IMatrixQueryFilterRange;
Begin
Mb := MetabaseClass.Active;
ObjDes := Mb.ItemById("CUBE");
CubDest := (ObjDes.Open(Null) As ICubeInstance).Destinations.DefaultDestination;
Sels := CubDest.CreateDimSelectionSet;
For Each Sel In Sels Do
sDim := Sel.Dimension.Name;
If sDim = "Calendar" Then
For Ei:=10 To 50 Do
Sel.SelectElement(Ei, False);
End For;
Else
Sel.SelectAll;
End If;
End For;
SelsAll := Sels;
Matrix := CubDest.Execute(SelsAll);
//создаем запрос на получении информации о существующих данных в указанной матрице
MatFac := New MatrixFactory.Create;
Query := (MatFac As IMatrixFactory).CreateQuery(Matrix);
//настраиваем параметры фильтрации данных матрицы
Filter := Query.Filter;
//получаем коллекцию диапазонов фильтрации данных матрицы
Ranges := Filter.Ranges;
//добавляем диапазон фильтрации данных
Range := Ranges.Add;
Range.Max := 10;
Range.Min := 0;
//определяем отметку коллекции справочников для запроса матрицы
Filter.Selection := Sels;
//получаем динамический массив элементов фильтра
ArList := Filter.Values;
//получаем количество элементов в массиве
debug.WriteLine(ArList.Count);
//проверяем, ту ли матрицу мы получили
If Matrix = Query.Matrix Then
debug.WriteLine("Матрицы совпадают");
End If;
//определяем параметры итератора матрица
Query.Select_;
//выполняем запрос
Query.Execute;
//получаем результат запроса
Result := Query.Result;
//результат выполнения запроса в виде матрицы
MatrixRes := Result.Matrix;
End Sub Main;
См. также: