IDimInstance.ElementsBySelectionsOrder

Синтаксис

ElementsBySelectionsOrder(FirstPriority: IDimSelection; SecondPriority: IDimSelection): IDimTreeIterator;

Параметры

FirstPriority. Отметка элементов с первым приоритетом;

SecondPriority. Отметка элементов со вторым приоритетом.

Описание

Свойство ElementsBySelectionsOrder возвращает итератор на дерево элементов справочника, построенное с учётом приоритетов отметок.

Комментарии

В первую очередь в дерево будут включены элементы, входящие в отметку с первым приоритетом или общие элементы отметок первого и второго приоритета. Во вторую очередь попадают элементы отметки со вторым приоритетом. Также в дерево включаются все родительские элементы, которые необходимы для доступа к элементам из отметок. Затем в дерево попадут все остальные элементы.

Пример

Для выполнения примера в репозитории предполагается наличие иерархического справочника с идентификатором STD_DIM.

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

Sub UserProc;
Var
    MB: IMetabase;
    DimInst: IDimInstance;
    DimElements: IDimElements;
    FirstSel, SecondSel: IDimSelection;
    Iterator: IDimTreeIterator;
Begin
    MB := MetabaseClass.Active;
    DimInst := MB.ItemById("STD_DIM").Open(Null) As IDimInstance;
    DimElements := DimInst.Elements;
    // Отметка первого приоритета
    FirstSel := DimInst.CreateSelection;
    FirstSel.SelectElement(0, False);
    FirstSel.SelectElement(3, False);
    FirstSel.SelectElement(5, False);
    // Отметка второго приоритета
    SecondSel := DimInst.CreateSelection;
    SecondSel.SelectElement(3, False);
    SecondSel.SelectElement(4, False);
    SecondSel.SelectElement(5, False);
    // Итератор на дерево элементов, построенное с учётом приоритетов отметок
    Iterator := DimInst.ElementsBySelectionsOrder(FirstSel, SecondSel);
    // Выведем элементы
    While Iterator.HasNext >= 0 Do
        Debug.WriteLine(DimElements.Name(Iterator.GetElement));
        // Если у элемента есть владелец, выведем его наименование
        If Iterator.GetParent >= 0 Then
            Debug.WriteLine("Родительский элемент: " + DimElements.Name(Iterator.GetParent));
        End If;
    End While;
End Sub UserProc;

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

См. также:

IDimInstance