IPrxTableIslandLayout.Sort

Синтаксис Fore

Sort: IPrxTableIslandSort;

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

Sort: Prognoz.Platform.Interop.Report.IPrxTableIslandSort;

Описание

Свойство Sort возвращает условие сортировки реляционной области данных.

Комментарии

Для определения, будет ли использоваться фильтрация для строк реляционной области данных, используйте свойство IPrxTableIslandLayout.FilterEnabled.

Пример Fore

Для выполнения примера предполагается наличие регламентного отчета с идентификатором «REGULAR_REPORT». На листе отчета размещена реляционная область данных.

Добавьте ссылки на системные сборки Metabase, Report.

Sub UserProc;
Var
    MB: IMetabase;
    Report: IPrxReport; 
    TabIs : IPrxTableIslands;
    TI : IPrxTableIsland;
    Layout : IPrxTableIslandLayout;
    Sort, Parent: IPrxTableIslandSort;
    SortItem: IPrxTableIslandSortItem;
    i, Index: Integer;
    FieldName: String;
    IsEnabled, Descending, InGroups, FilterEnabled: Boolean;
Begin
    MB := MetabaseClass.Active;
    Report := MB.ItemById("REGULAR_REPORT").Edit As IPrxReport;
    TabIs := Report.TableIslands;
    TI := TabIs.Item(0);
    Layout := TI.Layout;
    Sort := Layout.Sort;
    Sort.Enabled := TriState.Undefined; 
    Debug.WriteLine("=== Условия сортировки РОД: ===");
    If Sort.IsEnabled = True Then
        Debug.WriteLine("   Сортировка включена. Перенастроим её параметры");
        Else Debug.WriteLine("   Сортировка выключена. Настроим её параметры");
    End If;
    Debug.WriteLine("=== Условия сортировки по полям: ===");
    For i := 0 To Sort.Count - 1 Do
        SortItem := Sort.Item(i);
        // Включим сортировку по полям:
        If (i Mod 2<>0Then
            SortItem.Enabled := TriState.OnOption;
            Else SortItem.Enabled := TriState.OffOption;
        End If;
        // Включим опцию "Сортировка по убыванию":
        If (i Div 2=1Then
            SortItem.Descending := True;
            Else SortItem.Descending := False;
        End If;
        // Переместим условия в нужном порядке выполнения:
        Sort.Item(Sort.Count - 1).MoveToPosition(Sort.Count - 2);
        Sort.Item(0).MoveLast;
        // Выведем результаты настройки сортировки в окно консоли:
        FieldName := SortItem.LayoutCell.Field.FieldName;
        Debug.WriteLine((i+1).ToString + ". Наименование поля: " + FieldName);
        Index := SortItem.Index;
        Debug.WriteLine("   Индекс условия сортировки: " + Index.ToString);
        IsEnabled := SortItem.IsEnabled;
        If IsEnabled = True Then
            Debug.WriteLine("   Сортировка включена");
            Else Debug.WriteLine("   Сортировка выключена");
        End If;
        Descending := SortItem.Descending;
        If Descending = True Then
            Debug.WriteLine("   Сортировка по убыванию включена");
            Else Debug.WriteLine("   Сортировка по убыванию выключена");
        End If;
        InGroups := SortItem.InGroups;
        If InGroups = True Then
            Debug.WriteLine("   Сортировка внутри групп включена");
            Else Debug.WriteLine("   Сортировка внутри групп выключена");
        End If;
    End For;
    // Выключим сортировку для поля с индексом 1:
    Sort.Remove(1);
    // Удалим все условия сортировки из коллекции:
    Sort.Clear;
    Debug.WriteLine("=== Проверим, включена ли фильтрация для РОД ===");
    Parent := SortItem.Parent;
    FilterEnabled := Parent.Parent.FilterEnabled;
    If FilterEnabled = True Then
        Debug.WriteLine("   Фильтрация включена");
        Else 
            Debug.WriteLine("   Фильтрация выключена");
    End If;
    (Report As IMetabaseObject).Save;
End Sub UserProc;

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

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Добавьте ссылку на системные сборки Metabase, Report, ForeSystem.

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Report: IPrxReport; 
    TabIs : IPrxTableIslands;
    TI : IPrxTableIsland;
    Layout : IPrxTableIslandLayout;
    Sort, Parent: IPrxTableIslandSort;
    SortItem: IPrxTableIslandSortItem;
    i, Index: Integer;
    FieldName: String;
    IsEnabled, Descending, InGroups, FilterEnabled: Boolean;
Begin
    MB := Params.Metabase;
    Report := MB.ItemById["REGULAR_REPORT"].Edit() As IPrxReport;
    TabIs := Report.TableIslands;
    TI := TabIs.Item[0];
    Layout := TI.Layout;
    Sort := Layout.Sort;
    Sort.Enabled := TriState.tsUndefined;
    System.Diagnostics.Debug.WriteLine("=== Условия сортировки РОД: ===");
    If Sort.IsEnabled = True Then
        System.Diagnostics.Debug.WriteLine("   Сортировка включена. Перенастроим её параметры");
        Else System.Diagnostics.Debug.WriteLine("   Сортировка выключена. Настроим её параметры");
    End If;
    System.Diagnostics.Debug.WriteLine("=== Условия сортировки по полям: ===");
    For i := 0 To Sort.Count - 1 Do
        SortItem := Sort.Item[i];
        // Включим сортировку по полям:
        If (i Mod 2<>0Then
            SortItem.Enabled := TriState.tsOnOption;
            Else SortItem.Enabled := TriState.tsOffOption;
        End If;
        // Включим опцию "Сортировка по убыванию":
        If (i Div 2=1Then
            SortItem.Descending := True;
            Else SortItem.Descending := False;
        End If;
        // Переместим условия в нужном порядке выполнения:
        Sort.Item[Sort.Count - 1].MoveToPosition(Sort.Count - 2);
        Sort.Item[0].MoveLast();
        // Выведем результаты настройки сортировки в окно консоли:
        FieldName := SortItem.LayoutCell.Field.FieldName;
        System.Diagnostics.Debug.WriteLine((i+1).ToString() + ". Наименование поля: " + FieldName);
        Index := SortItem.Index;
        System.Diagnostics.Debug.WriteLine("   Индекс условия сортировки: " + Index.ToString());
        IsEnabled := SortItem.IsEnabled;
        If IsEnabled = True Then
            System.Diagnostics.Debug.WriteLine("   Сортировка включена");
            Else System.Diagnostics.Debug.WriteLine("   Сортировка выключена");
        End If;
        Descending := SortItem.Descending;
        If Descending = True Then
            System.Diagnostics.Debug.WriteLine("   Сортировка по убыванию включена");
            Else System.Diagnostics.Debug.WriteLine("   Сортировка по убыванию выключена");
        End If;
        InGroups := SortItem.InGroups;
        If InGroups = True Then
            System.Diagnostics.Debug.WriteLine("   Сортировка внутри групп включена");
            Else System.Diagnostics.Debug.WriteLine("   Сортировка внутри групп выключена");
        End If;
    End For;
    // Выключим сортировку для поля с индексом 1:
    Sort.Remove(1);
    // Удалим все условия сортировки из коллекции:
    Sort.Clear();
    System.Diagnostics.Debug.WriteLine("=== Проверим, включена ли фильтрация для РОД ===");
    Parent := SortItem.Parent;
    FilterEnabled := Parent.Parent.FilterEnabled;
    If FilterEnabled = True Then
        System.Diagnostics.Debug.WriteLine("   Фильтрация включена");
        Else 
            System.Diagnostics.Debug.WriteLine("   Фильтрация выключена");
    End If;
    (Report As IMetabaseObject).Save();
End Sub;

См. также:

IPrxTableIslandLayout