HasChildren: Boolean;
HasChildren(): boolean;
Метод HasChildren возвращает признак наличия у текущих объектов дочерних объектов.
Допустимые значения:
True. У объекта есть непосредственные дочерние объекты (доступ к ним можно получить в свойстве IMetabaseObjectDescriptor.Children) и имеются объекты, для которых установлен признак отложенной загрузки описаний (доступ к ним можно получить, используя методы IMetabase.FetchItem, IMetabase.FetchItemById, IMetabase.FetchItems и IMetabase.FetchItemsById);
Примечание. Для получения точного значения элемента коллекции (с учетом прав доступа пользователя к данному элементу) рекомендуется после применения метода HasChildren выполнить выгрузку элементов коллекции (Children.Count), а затем уже получать точное значение (Children.Item(i)).
False. У объекта нет дочерних объектов.
Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «TSDB».
Добавьте ссылку на системную сборку Metabase.
Sub UserProg;
Var
MB: IMetabase;
MDesc: IMetabaseObjectDescriptor;
MDescr: IMetabaseObjectDescriptors;
i: integer;
Begin
MB := MetabaseClass.Active;
MDesc := Mb.ItemById("TSDB");
MDescr := MDesc.Children;
If MDesc.HasChildren = True Then
Debug.WriteLine("Дочерние объекты:");
Debug.Indent;
For i := 0 To MDescr.Count - 1 Do
MDesc := MDescr.Item(i);
Debug.WriteLine("Наименование: " + MDesc.Name + "; Идентификатор: " + MDesc.Id);
End For;
Debug.Unindent;
Else
Debug.WriteLine("Нет дочерних объектов.");
End If;
End Sub UserProg;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MDesc: IMetabaseObjectDescriptor;
MDescr: IMetabaseObjectDescriptors;
i: integer;
Begin
MB := Params.Metabase;
MDesc := Mb.ItemById["TSDB"];
MDescr := MDesc.Children;
If MDesc.HasChildren() = True Then
System.Diagnostics.Debug.WriteLine("Дочерние объекты:");
System.Diagnostics.Debug.Indent();
For i := 0 To MDescr.Count - 1 Do
MDesc := MDescr.Item[i];
System.Diagnostics.Debug.WriteLine("Наименование: " + MDesc.Name + "; Идентификатор: " + MDesc.Id);
End For;
System.Diagnostics.Debug.Unindent();
Else
System.Diagnostics.Debug.WriteLine("Нет дочерних объектов.");
End If;
End Sub;
После выполнения примера, если в указанном объекте имеются дочерние объекты, то их наименования и идентификаторы будут выведены в консоль среды разработки.
См. также: