CurrentOffset: Integer;
CurrentOffset: integer;
Свойство CurrentOffset возвращает число уровней иерархии от корня справочника до набора элементов.
Для получения текущего элемента в наборе используйте метод IMetaMembersSet.Current.
Для выполнения примера предполагается наличие базы данных временных рядов с идентификатором «TSDB».
Добавьте ссылки на системные сборки: Cubes, Metabase, Rds.
Sub UserProc;
Var
MB: IMetabase;
Rubr: IMetabaseObject;
RubrInst: IRubricatorInstance;
Facts: IMetaDictionaryInstance;
Hierarchy: IMetaHierarchy;
HInstance: IMetaHierarchyInstance;
Members: IMetaMembers;
Begin
MB := MetabaseClass.Active;
Rubr := MB.ItemById("TSDB").Bind;
RubrInst := Rubr.Open(Null) As IRubricatorInstance;
Facts := RubrInst.GetDictionary(RubricatorDictionary.Facts);
Hierarchy := Facts.Dictionary.DefaultHierarchy;
HInstance := Facts.OpenHierarchy(Hierarchy);
Members := HInstance.GetRootMembers;
Members.Reset;
Debug.WriteLine("Число уровней иерархии: " + Members.CurrentOffset.ToString);
Debug.WriteLine("Наименования корневых элементов в иерархии:");
Debug.Indent;
While Not Members.Eof Do
Debug.WriteLine(Members.Current.Name);
Members.Next;
End While;
Debug.Unindent;
End Sub UserProc;
В результате выполнения примера в окно консоли будут выведены:
число уровней иерархии;
наименования корневых элементов в иерархии показателей.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Rds;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Rubr: IMetabaseObject;
RubrInst: IRubricatorInstance;
Facts: IMetaDictionaryInstance;
Hierarchy: IMetaHierarchy;
HInstance: IMetaHierarchyInstance;
Members: IMetaMembers;
Begin
MB := Params.Metabase;
Rubr := MB.ItemById["TSDB"].Bind();
RubrInst := Rubr.Open(Null) As IRubricatorInstance;
Facts := RubrInst.GetDictionary(RubricatorDictionary.rubdicFacts);
Hierarchy := Facts.Dictionary.DefaultHierarchy;
HInstance := Facts.OpenHierarchy(Hierarchy);
Members := HInstance.GetRootMembers();
Members.Reset();
System.Diagnostics.Debug.WriteLine("Число уровней иерархии: " + Members.CurrentOffset.ToString());
System.Diagnostics.Debug.WriteLine("Наименования корневых элементов в иерархии:");
System.Diagnostics.Debug.Indent();
While Not Members.Eof() Do
System.Diagnostics.Debug.WriteLine(Members.Current().Name);
Members.Next();
End While;
System.Diagnostics.Debug.Unindent();
End Sub;
См. также: