Каждый элемент справочника представляет из себя совокупность значений различных атрибутов справочника. Получив коллекцию элементов и зная сквозной индекс требуемого элемента, можно получить значения базовых атрибутов справочника. Для этого используются следующие свойства:
IDimElements.Id - для указанного элемента возвращает значение атрибута с назначением Идентификатор.
IDimElements.Name - для указанного элемента возвращает значение атрибута с назначением Наименование.
Если у элементов необходимо получить значения по какому-либо другому атрибуту, то используются свойства IDimElements.AttributeValue и IDimElements.AttributeValueO.
Пример использования свойства AttributeValue:
Var
MB: IMetabase;
DimInst: IDimInstance;
Elements: IDimElements;
Attributes: IDimAttributes;
UserAttr, i, Elem: Integer;
Begin
MB := MetabaseClass.Active;
DimInst := MB.ItemById("Dim_1").Open(Null) As IDimInstance;
Elements := DimInst.Elements;
Attributes := DimInst.Dimension.Attributes;
For i := 0 To Attributes.Count - 1 Do
If Attributes.Item(i) = Attributes.FindById("USERATTRIBUTE") Then
//Получения индекса пользовательского атрибута
UserAttr := i;
Break;
End If;
End For;
For Elem := 0 To Elements.Count - 1 Do
//Вывод значений пользовательского атрибута для всех элементов
Debug.WriteLine(Elements.AttributeValue(Elem, UserAttr));
End For;
Пример использования свойства AttributeValueO:
Var
MB: IMetabase;
DimInst: IDimInstance;
Elements: IDimElements;
UserAttr: IDimAttributeInstance;
Elem: Integer;
Begin
MB := MetabaseClass.Active;
DimInst := MB.ItemById("Dim_1").Open(Null) As IDimInstance;
Elements := DimInst.Elements;
//Получение данных по пользовательскому атрибуту
UserAttr := DimInst.Attributes.FindById("USERATTRIBUTE");
For Elem := 0 To Elements.Count - 1 Do
//Вывод значений пользовательского атрибута для всех элементов
Debug.WriteLine(Elements.AttributeValueO(Elem, UserAttr));
End For;
Для работы с коллекцией значений по различным атрибутам справочника предназначен интерфейс IDimAttributeInstance. Используя свойства и методы данного интерфейса можно получить значение данного атрибута для любого элемента справочника. Также по значениями атрибута можно производить поиск требуемых элементов.
Var
MB: IMetabase;
DimInst: IDimInstance;
Elements: IDimElements;
UserAttr: IDimAttributeInstance;
Elem: Integer;
Begin
MB := MetabaseClass.Active;
DimInst := MB.ItemById("Dim_1").Open(Null) As IDimInstance;
Elements := DimInst.Elements;
UserAttr := DimInst.Attributes.FindById("USERATTRIBUTE");
For Elem := 0 To Elements.Count - 1 Do
Debug.WriteLine(UserAttr.Value(Elem));
End For;
Во всех рассмотренных примерах осуществляется работа с пользовательским атрибутом «USERATTRIBUTE», который должен быть заранее создан в справочнике.
См. также: