ISearchSourceDataResult.CreateDimSelectionSet

Синтаксис Fore

CreateDimSelectionSet: IDimSelectionSet;

Синтаксис Fore.NET

CreateDimSelectionSet: Prognoz.Platform.Interop.BISearch.IDimSelectionSet;

Описание

Метод CreateDimSelectionSet создает по найденным элементам измерений отметку, которая формирует срез данных.

Пример Fore

Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с наименованием «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(0As 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(NullAs ICubeInstance;
        Expr.OpenCubeDestination(Cube, Source.DestinationKey, EaxOpenCubeOptions.None);
        //Получение отметки среза
        SelSet := Result.CreateDimSelectionSet;
        //Установка отметки в экспресс-отчете
        SelSet.CopyTo(Expr.Pivot.Selection, TrueTrue);
        //Подключение к компоненту UiErAnalyzer
        UiErAnalyzer1.ErAnalyzer := Expr;
        UiErAnalyzer1.Active := True;
    End If;
End Sub Button1OnClick;

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

После этого экспресс-отчет будет подключен к компонентам формы для просмотра данных найденного среза.

Пример Fore.NET

Необходимые требования и результат выполнения примера 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[0As 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(NullAs ICubeInstance;
        Expr.OpenCubeDestination(Cube, Source.DestinationKey, EaxOpenCubeOptions.eocoNone);
        //Получение отметки среза
        SelSet := Result.CreateDimSelectionSet();
        //Установка отметки в экспресс-отчете
        SelSet.CopyTo(Expr.Pivot.Selection, TrueTrue);
        //Подключение к компоненту UiErAnalyzerNet
        UiErAnalyzerNet1.AnalyzerUi.ErAnalyzer := Expr;
        UiErAnalyzerNet1.Active := True;
    End If;
End Sub;

См. также:

ISearchSourceDataResult