NewElementsOrderSetup: IDimElementsOrderSetup;
NewElementsOrderSetup(): Prognoz.Platform.Interop.Dimensions.IDimElementsOrderSetup;
Метод NewElementsOrderSetup возвращает настройки пользовательской сортировки элементов справочника.
Для выполнения примера предполагается наличие в репозитории табличного справочника НСИ с идентификатором «DIM».
Добавьте ссылки на системные сборки: Dimensions и Metabase.
Sub UserProc;
Var
MB: IMetabase;
OrderSetup: IDimElementsOrderSetup;
Attribute : IDimAttribute;
AttrInst: IDimAttributeInstance;
Iterator: IDimTreeIterator;
DimInst: IDimInstance;
Begin
MB := MetabaseClass.Active;
DimInst := MB.ItemById("DIM").Open(Null) As IDimInstance;
OrderSetup := DimInst.NewElementsOrderSetup;
AttrInst := DimInst.Attributes.Item(1);
Attribute := AttrInst.Attribute;
// Добавим атрибут в список сортировки
OrderSetup.Add(Attribute, False);
Debug.WriteLine("Количество атрибутов
сортировки: " + OrderSetup.Count.ToString);
Debug.WriteLine("Сортировка по атрибуту " + Attribute.Name + ", ключ атрибута: "
+ OrderSetup.AttributeKey(0).ToString);
// Получим итератор на дерево, построенное с учетом сортировки
Iterator := DimInst.ElementsByOrder(OrderSetup);
// Определим направление сортировки
If OrderSetup.ReverseOrder(0) Then
Debug.WriteLine("Сортировка по убыванию");
Else
Debug.WriteLine("Сортировка по возрастанию");
End If;
// Выведем элементы
справочника с учетом сортировки
While Iterator.HasNext >= 0 Do
Debug.WriteLine(DimInst.Elements.AttributeValueO(Iterator.GetElement, AttrInst));
// Если у элемента есть владелец, выведем индекс владельца
If Iterator.GetParent >= 0 Then
Debug.WriteLine("Индекс владельца элемента: " + Iterator.GetParent.ToString);
End If;
End While;
// Осуществим переход на начало итератора
Iterator.ResetIterator;
End Sub UserProc;
В результате выполнения примера будет настроена сортировка элементов справочника, после чего будет получен итератор на построенное дерево. В окно консоли будет выведена информация о параметрах сортировки и отсортированные элементы справочника.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Dimensions;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
OrderSetup: IDimElementsOrderSetup;
Attribute : IDimAttribute;
AttrInst: IDimAttributeInstance;
Iterator: IDimTreeIterator;
DimInst: IDimInstance;
Begin
MB := Params.Metabase;
DimInst := MB.ItemById["DIM"].Open(Null) As IDimInstance;
OrderSetup := DimInst.NewElementsOrderSetup();
AttrInst := DimInst.Attributes.Item[1];
Attribute := AttrInst.Attribute;
// Добавим атрибут в список сортировки
OrderSetup.Add(Attribute, False);
System.Diagnostics.Debug.WriteLine("Количество атрибутов сортировки: " + OrderSetup.Count);
System.Diagnostics.Debug.WriteLine("Сортировка по атрибуту " + Attribute.Name + ", ключ атрибута: "
+ OrderSetup.AttributeKey(0));
// Получим итератор на дерево, построенное с учетом сортировки
Iterator := DimInst.ElementsByOrder[OrderSetup];
// Определим направление сортировки
If OrderSetup.ReverseOrder[0] Then
System.Diagnostics.Debug.WriteLine("Сортировка по убыванию");
Else
System.Diagnostics.Debug.WriteLine("Сортировка по возрастанию");
End If;
// Выведем элементы
справочника с учетом сортировки
While Iterator.HasNext() >= 0 Do
System.Diagnostics.Debug.WriteLine(DimInst.Elements.AttributeValueO[Iterator.GetElement(), AttrInst]);
// Если у элемента есть владелец, выведем индекс владельца
If Iterator.GetParent() >= 0 Then
System.Diagnostics.Debug.WriteLine("Индекс владельца элемента: " + Iterator.GetParent());
End If;
End While;
// Осуществим переход на начало итератора
Iterator.ResetIterator();
End Sub;
См. также: