HasChildren: Boolean;
HasChildren(): boolean;
Метод HasChildren возвращает признак наличия у текущих объектов дочерних объектов.
Допустимые значения:
True. У объекта есть непосредственные дочерние объекты (доступ к ним можно получить в свойстве Children) и имеются объекты, для которых установлен признак отложенной загрузки описаний (доступ к ним можно получить, используя методы IMetabase.FetchItem, IMetabase.FetchItemById, IMetabase.FetchItems и IMetabase.FetchItemsById);
Примечание. Для получения точного значения элемента коллекции (с учетом прав доступа пользователя к данному элементу) рекомендуется после применения метода HasChildren выполнить выгрузку элементов коллекции (Children.Count), а затем уже получать точное значение (Children.Item(i)).
False. У объекта нет дочерних объектов.
Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «NSI».
Добавьте ссылку на системную сборку «Metabase».
Sub UserProg;
Var
MB: IMetabase;
MDesc: IMetabaseObjectDescriptor;
MDescr: IMetabaseObjectDescriptors;
i: integer;
Begin
MB := MetabaseClass.Active;
MDesc := Mb.ItemById("NSI");
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;
После выполнения примера, если в указанном репозитории НСИ имеются дочерние объекты, то их наименования и идентификаторы будут выведены в консоль среды разработки.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MDesc: IMetabaseObjectDescriptor;
MDescr: IMetabaseObjectDescriptors;
i: integer;
Begin
MB := Params.Metabase;
MDesc := Mb.ItemById["NSI"];
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;
См. также: