IMDCalculationInstance.FindElementEntries

Синтаксис Fore

FindElementEntries(ElementKey: IMDCalculationFormulaElementKey): IMDCalculationFormulasIterator;

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

FindElementEntries(ElementKey: Prognoz.Platform.Interop.Cubes.IMDCalculationFormulaElementKey): Prognoz.Platform.Interop.Cubes.IMDCalculationFormulasIterator;

Параметры

ElementKey. Ключ элемента, который будет использован для поиска вхождений элемента в формулы.

Описание

Метод FindElementEntries осуществляет поиск вхождений элемента в формулы.

Комментарии

Если поиск прошел удачно, то метод возвращает итератор по формулам, в которые входит элемент. Если вхождений не обнаружено, то метод вернет значение Null.

Пример Fore

Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с наименованием Button1 и текстовый редактор с наименованием Memo1. Также в репозитории должен существовать многомерный расчет с идентификатором OBJMD.

    Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Var
        MB: IMetabase;
        MDInst: IMDCalculationInstance;
        Source: IMDCalculationSourceInstance;
        Slices: IMDCalculationSlicesInstance;
        Slice: IMDCalculationSliceInstance;
        Coord: IMatrixCoord;
        SourceElKey: IMDCalculationFormulaElementKey;
        Iterator: IMDCalculationFormulasIterator;
        i, j: Integer;
    Begin
        MB := MetabaseClass.Active;
        MDInst := MB.ItemById("OBJMD").Open(NullAs IMDCalculationInstance;
        Source := MDInst.Sources.Item(0);
        Slices := Source.Slices;
        Coord := Source.NewCoord;
        //Во всех измерениях выбираем первые элементы
        For i := 0 To Slices.Count - 1 Do
            Slice := Slices.Item(i);
            Coord.Item(i) := 0;
            Memo1.Lines.Add("В " + Slice.Name + " отмечен элемент " + Slice.Dimension.Elements.Name(Coord.Item(i)));
        End For;
        SourceElKey := Source.CoordToKey(Coord);
        SourceElKey.FactIndex := 0;
        Iterator := MDInst.FindElementEntries(SourceElKey);
        j := 0;
        While Not Iterator.Eof Do
            j := j + 1;
            Memo1.Lines.add("факт: " + Iterator.Key.FactIndex.ToString);
            Iterator.Next;
        End While;
        Memo1.Lines.add("Количество вхождений по координате: " + j.ToString);
    End Sub Button1OnClick;

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

Пример Fore.NET

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

    Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
    Var
        MB: IMetabase;
        MDInst: IMDCalculationInstance;
        Source: IMDCalculationSourceInstance;
        Slices: IMDCalculationSlicesInstance;
        Slice: IMDCalculationSliceInstance;
        Coord: IMatrixCoord;
        SourceElKey: IMDCalculationFormulaElementKey;
        Iterator: IMDCalculationFormulasIterator;
        s: List<string>;
        i, j: Integer;
    Begin
        MB := Self.Metabase;
        MDInst := MB.ItemById["OBJMD"].Open(NullAs IMDCalculationInstance;
        Source := MDInst.Sources.Item[0];
        Slices := Source.Slices;
        Coord := Source.NewCoord();
        //Во всех измерениях выбираем первые элементы
        For i := 0 To Slices.Count - 1 Do
            Slice := Slices.Item[i];
            Coord.Item[i] := 0;
            s.Add("В " + Slice.Name + " отмечен элемент " + Slice.Dimension.Elements.Name[Coord.Item[i] As uinteger]);
        End For;
        SourceElKey := Source.CoordToKey(Coord, Null);
        SourceElKey.FactIndex := 0;
        Iterator := MDInst.FindElementEntries(SourceElKey);
        j := 0;
        While Not Iterator.Eof() Do
            j := j + 1;
            s.Add("факт: " + Iterator.Key().FactIndex.ToString());
            Iterator.Next();
        End While;
        s.Add("Количество вхождений по координате: " + j.ToString());
        TextBox1.Lines := s.ToArray();
    End Sub;

См. также:

IMDCalculationInstance