CreateDimSelectionSet: IDimSelectionSet;
CreateDimSelectionSet: Prognoz.Platform.Interop.BISearch.IDimSelectionSet;
Метод CreateDimSelectionSet создает по найденным элементам измерений отметку, которая формирует срез данных.
Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с наименованием «Button1», компонента UiErAnalyzer с наименованием «UiErAnalyzer1» и каких-либо визуальных компонентов, для которых «UiErAnalyzer1» установлен в качестве источника данных. Подключите системные сборки: BISearch, Cubes, Dimensions, Express, Fore, Metabase, Pivot.
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
MB: IMetabase;
SharedParams: ISharedParams;
SearchEngine: ISolrSearchEngineService;
Schema: ISolrSearchEngineSchema;
SearchExecutor: ISearchExecutor;
SearchContext: ISolrSourceDataSearchContext;
Results: ISolrSearchResults;
Result: ISearchSourceDataResult;
Source: ISourceMetadata;
CrInfo: IMetabaseObjectCreateInfo;
Cube: ICubeInstance;
Expr: IEaxAnalyzer;
SelSet: IDimSelectionSet;
Begin
MB := MetabaseClass.Active;
//Параметры поиска и индексации, заданные для репозитория
SharedParams := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Bind As ISharedParams;
SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
//Параметры поиска
SearchExecutor := Schema.SearchExecutor(SearchEngineTargetType.SourceData);
SearchContext := SearchExecutor.CreateContext As ISolrSourceDataSearchContext;
SearchContext.Locale := LocaleCodeID.Russian;
SearchContext.Text := "Россия";
//Поиск
Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
//Просмотр информации по источнику для первого результата поиска
Result := Results.Item(0) As ISearchSourceDataResult;
Source := Result.SourceMetadata;
Debug.WriteLine("Наименование среза: " + Result.Name);
Debug.WriteLine("Источник: " + Source.SourceName + '(' + Source.SourceId + ')');
//Отображение среза
If Source.SourceClassId = MetabaseObjectClass.KE_CLASS_STDCUBE Then
CrInfo := MB.CreateCreateInfo;
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_EXPRESSREPORT;
Expr := MB.CreateObject(CrInfo).Edit As IEaxAnalyzer;
Cube := MB.Item(Source.SourceKey).Open(Null) As ICubeInstance;
Expr.OpenCubeDestination(Cube, Source.DestinationKey, EaxOpenCubeOptions.None);
//Получение отметки среза
SelSet := Result.CreateDimSelectionSet;
//Установка отметки в экспресс-отчете
SelSet.CopyTo(Expr.Pivot.Selection, True, True);
//Подключение к компоненту UiErAnalyzer
UiErAnalyzer1.ErAnalyzer := Expr;
UiErAnalyzer1.Active := True;
End If;
End Sub Button1OnClick;
При нажатии на кнопку будет осуществлен поиск указанного значения по индексированной информации об элементах измерений. Из первого найденного результата будет получена информация об источнике данных. Если источником является стандартный куб, то будут выполнены следующие действия:
динамически создан экспресс-отчет;
в качестве источника для экспресс-отчета будет установлен полученный куб;
создана отметка, соответствующая найденному срезу. Отметка будет установлена в экспресс-отчете.
После этого экспресс-отчет будет подключен к компонентам формы для просмотра данных найденного среза.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Вместо компонентов Fore используйте их Fore.NET аналоги. Кроме сборок, указанных в примере Fore, подключите также сборку «ForeSystem».
Imports Prognoz.Platform.Interop.BISearch;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Pivot;
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
MB: IMetabase;
SharedParams: ISharedParams;
SearchEngine: ISolrSearchEngineService;
Schema: ISolrSearchEngineSchema;
SearchExecutor: ISearchExecutor;
SearchContext: ISolrSourceDataSearchContext;
Results: ISolrSearchResults;
Result: ISearchSourceDataResult;
Source: ISourceMetadata;
CrInfo: IMetabaseObjectCreateInfo;
Cube: ICubeInstance;
Expr: EaxAnalyzer;
SelSet: IDimSelectionSet;
Begin
MB := Self.Metabase;
//Параметры поиска и индексации, заданные для репозитория
SharedParams := MB.SpecialObject[MetabaseSpecialObject.msoSharedParams].Bind() As ISharedParams;
SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
//Параметры поиска
SearchExecutor := Schema.SearchExecutor[SearchEngineTargetType.settSourceData];
SearchContext := SearchExecutor.CreateContext() As ISolrSourceDataSearchContext;
SearchContext.Locale := LocaleCodeID.lcidRussian;
SearchContext.Text := "Россия";
//Поиск
Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
//Просмотр информации по источнику для первого результата поиска
Result := Results.Item[0] As ISearchSourceDataResult;
Source := Result.SourceMetadata;
System.Diagnostics.Debug.WriteLine("Наименование среза: " + Result.Name);
System.Diagnostics.Debug.WriteLine("Источник: " + Source.SourceName + '(' + Source.SourceId + ')');
//Отображение среза
If Source.SourceClassId = (MetabaseObjectClass.KE_CLASS_STDCUBE As uinteger) Then
CrInfo := MB.CreateCreateInfo();
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_EXPRESSREPORT As integer;
Expr := MB.CreateObject(CrInfo).Edit() As EaxAnalyzer;
Cube := MB.Item[Source.SourceKey].Open(Null) As ICubeInstance;
Expr.OpenCubeDestination(Cube, Source.DestinationKey, EaxOpenCubeOptions.eocoNone);
//Получение отметки среза
SelSet := Result.CreateDimSelectionSet();
//Установка отметки в экспресс-отчете
SelSet.CopyTo(Expr.Pivot.Selection, True, True);
//Подключение к компоненту UiErAnalyzerNet
UiErAnalyzerNet1.AnalyzerUi.ErAnalyzer := Expr;
UiErAnalyzerNet1.Active := True;
End If;
End Sub;
См. также: