IPivotSortItem.IndexInHeader

Синтаксис Fore

IndexInHeader: Integer;

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

IndexInHeader: integer;

Описание

Свойство IndexInHeader определяет в заголовке индекс элемента, по которому будет осуществляться сортировка.

Комментарии

Для использования данного свойства необходимо, чтобы свойство IPivotSortItem.Kind принимало значение PivotSortKind.Row или PivotSortKind.Column.

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

Пример Fore

Для выполнения примера в репозитории необходимо наличие экспресс-отчета с идентификатором «EXPRESS», содержащего таблицу.

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

Sub UserProc;
Var
    MB: IMetabase;
    Express: IEaxAnalyzer;
    Pivot: IPivot;
    SortItem: IPivotSortItem;
    Getter: IDataAreaTransformationsGetter;
    Slice: IEaxDataAreaSlice;
    Sel: IDimSelection;
    SelSet: IDimSelectionSet;
    i: Integer;
    Trans: IEaxDataAreaTransformations;
    Tran: IEaxDataAreaTransformation;
Begin
    // Получим репозиторий
    MB := MetabaseClass.Active;
    // Получим экспресс-отчет
    Express := MB.ItemById("EXPRESS").Edit As IEaxAnalyzer;
    // Получим таблицу
    Pivot := Express.Pivot;
    // Удалим все сортировки таблицы
    Pivot.Sorter.Clear;
    // Добавим сортировку таблицы
    SortItem := Pivot.Sorter.Add;
    // Проверим, включена ли сортировка
    If Not Pivot.Sorter.Enabled Then
        Pivot.Sorter.Enabled := True;
    End If;
    // Сортировка по возрастанию
    SortItem.Direction := PivotSortDirection.Asc;
    // Сортировка по третьей строке таблицы
    SortItem.Kind := PivotSortKind.Row;
    SortItem.IndexInHeader := 2;
    // Сортировка по формуле
    SortItem.UseTransformationValues := True;
    Getter := SortItem As IDataAreaTransformationsGetter;
    Slice := Express.DataArea.Slices.Item(0);
    SelSet := SortItem.Selection.CreateCopy;
    For i := 0 To SelSet.Count - 1 Do
            Sel := SelSet.Item(i);
            Sel.DeselectAll;
        End For;
    // Добавим формулу
    Trans := Slice.GetTransformations(Getter);
        If Trans.Count > 0 Then
            Tran := Trans.Item(0);
        Else
            Tran := Trans.Add(SelSet, Null, -1);
            Tran.Expression.AsString := "1/{Значение[t]}";
        End If;
        Tran.Enabled := True;
    // Сохраним измерения
    (Express As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера для таблицы экспресс-отчета будет применена сортировка по третьей строке по заданной формуле.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Pivot;


Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Express: IEaxAnalyzer;
    Pivot: IPivot;
    SortItem: IPivotSortItem;
    Getter: IDataAreaTransformationsGetter;
    Slice: IEaxDataAreaSlice;
    Sel: IDimSelection;
    SelSet: IDimSelectionSet;
    i: Integer;
    Trans: IEaxDataAreaTransformations;
    Tran: IEaxDataAreaTransformation;
Begin
    // Получим репозиторий
    MB := Params.Metabase;
    // Получим экспресс-отчет
    Express := MB.ItemById["EXPRESS"].Edit() As IEaxAnalyzer;
    // Получим таблицу
    Pivot := Express.Pivot;
    // Удалим все сортировки таблицы
    Pivot.Sorter.Clear();
    // Добавим сортировку таблицы
    SortItem := Pivot.Sorter.Add();
    // Проверим, включена ли сортировка
    If Not Pivot.Sorter.Enabled Then
        Pivot.Sorter.Enabled := True;
    End If;
    // Сортировка по возрастанию
    SortItem.Direction := PivotSortDirection.psdAsc;
    // Сортировка по третьей строке таблицы
    SortItem.Kind := PivotSortKind.pskRow;
    SortItem.IndexInHeader := 2;
    // Сортировка по формуле
    SortItem.UseTransformationValues := True;
    Getter := SortItem As IDataAreaTransformationsGetter;
    Slice := Express.DataArea.Slices.Item[0];
    SelSet := SortItem.Selection.CreateCopy();
    For i := 0 To SelSet.Count - 1 Do
            Sel := SelSet.Item[i];
            Sel.DeselectAll();
        End For;
    // Добавим формулу
    Trans := Slice.GetTransformations(Getter);
        If Trans.Count > 0 Then
            Tran := Trans.Item[0];
        Else
            Tran := Trans.Add(SelSet, Null, uinteger.MaxValue);
            Tran.Expression.AsString := "1/{Значение[t]}";
        End If;
        Tran.Enabled := True;
    // Сохраним измерения
    (Express As IMetabaseObject).Save();
End Sub;

См. также:

IPivotSortItem