CreateDimInstance: IDimInstance;
Метод CreateDimInstance возвращает данные справочника на основе текущего набора элементов справочника НСИ.
Метод возвращает значения системных или всех атрибутов справочника НСИ в зависимости от значения свойства IRdsDictionaryInstance.FetchAll.
Примечание. Метод не возвращает значения заимстовованных атрибутов.
Если напрямую приводить интерфейс IRdsDictionaryInstance к IDimInstance, то возвращаются кэшированные данные. При использовании метода CreateDimInstance возвращаются данные, основанных на фактическом наборе элементов. Поэтому для получения актуальных данных следует использовать CreateDimInstance.
Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с идентификатором «Button1», компонента RdsDictionaryBox с идентификатором «RdsDictionaryBox1» и компонента UiRdsDictionary, являющегося источником данных для «RdsDictionaryBox1». В «RdsDictionaryBox1» загружен справочник НСИ.
Пример является обработчиком события OnClick для кнопки «Button1».
Добавьте ссылку на системную сборку «Dimensions».
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
DictInst: IRdsDictionaryInstance;
Inst: IDimInstance;
Elems: IDimElements;
ElemArr: IDimElementArray;
Iter: IDimIterator;
Ats: IDimAttributesInstance;
Atr: IDimAttributeInstance;
i: Integer;
s: String;
Begin
DictInst := RdsDictionaryBox1.Source.Instance;
// Загружаем в кэш значения системных и пользовательских атрибутов
DictInst.FetchAll := True;
// Получаем данные справочника
Inst := DictInst As IDimInstance;
// Получаем элементы справочника
Elems := Inst.Elements;
ElemArr := Inst.RootElements;
Iter := ElemArr.Iterator;
// Получаем атрибуты справочника
Ats := Inst.Attributes;
// Выводим значения атрибутов
Debug.WriteLine("Значения атрибутов для корневых элементов:");
While Iter.Next Do
Debug.WriteLine("Элемент " + Iter.Position.ToString);
Debug.Indent;
For i := 0 To Ats.Count - 1 Do
s := "";
Atr := Ats.Item(i);
s := Atr.Attribute.Name + ": ";
s := s + Atr.Value(Iter.Element);
Debug.WriteLine(s);
End For;
Debug.Unindent;
If Iter.Position = 9 Then
Break;
End If;
End While;
End Sub Button1OnClick;
Результат выполнения примера: в окно консоли выведены значения атрибутов для первых десяти корневых элементов справочника НСИ, загруженного в «RdsDictionaryBox1».
См. также: