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;
При выполнении примера на основе открытого экземпляра справочника будут сформированы две отметки. С учётом приоритетов отметок будет построено дерево элементов и получен итератор для работы с ним. Затем список наименований элементов в сформированном дереве будет выведен в консоль среды разработки.
См. также: