IRdsElementsIterator.CreateChildrenIterator

Синтаксис Fore

CreateChildrenIterator(Parent: IRdsDictionaryElement;
                       FirstElement: Integer;
                       [CopyFilter: Boolean = True]): IRdsElementsIterator;

Синтаксис Fore.NET

CreateChildrenIterator(Parent: Prognoz.Platform.Interop.Rds.IRdsDictionaryElement;
                       FirstElement: integer;
                       CopyFilter: boolean): Prognoz.Platform.Interop.Rds.IRdsElementsIterator;

Параметры

Parent. Элемент, для которого создается итератор.

FirstElement. Индекс первого элемента.

CopyFilter. Признак копирования фильтра родительского итератора.

Описание

Метод CreateChildrenIterator создает для указанного элемента справочника итератор, предназначенный для навигации по дочерним элементам.

Комментарии

В языке Fore параметр CopyFilter необязательный и по умолчанию имеет значение True, т.е. в дочернем итераторе используется тот же фильтр элементов, что и в родительском итераторе.

Пример Fore

Для выполнения примера в репозитории предполагается наличие репозитория НСИ с идентификатором «RDS». Данный репозиторий должен содержать табличный справочник НСИ с идентификатором «DIC».

Добавьте ссылки на системные сборки «Metabase», «Rds».

Sub UserProc;
Var
    mb: IMetabase;
    rdsKey: Integer;
    RdsInst: IRdsDictionaryInstance;
    elSearch: IRdsDictionaryElementsSearch;
    Dict: IRdsDictionary;
    Iter: IRdsElementsIterator;
    IterCh: IRdsElementsIterator;
Begin
    mb := MetabaseClass.Active;
    rdsKey := mb.GetObjectKeyById("RDS");
    // Получаем справочник, в котором будет выполняться поиск
    RdsInst := mb.ItemByIdNamespace("DIC", rdsKey).Open(NullAs IRdsDictionaryInstance;
    Dict := RdsInst.Dictionary;
    // Создаем объект для поиска по справочнику
    elSearch := RdsInst.CreateSearch;
    // Проверяем: выполняется ли поиск среди объектов, полученных из итератора
    If Not elSearch.IsIterator Then
        // Создаем итератор
        Iter := RdsInst.BigElements.CreateIterator(1100NullNull);
        // Устанавливаем созданный итератор для объекта, выполняющего поиск
        elSearch.SetIterator(Iter);
        // Выводим элементы итератора в окно консоли
        Debug.WriteLine("Элементы итератора:");
        Iter.First; Iter.Next;
        Debug.WriteLine(Iter.Element.Name);
        IterCh := Iter.CreateChildrenIterator(Iter.Element, 0True);
        IterCh.First;
        While IterCh.Next Do
            Debug.WriteLine("  " + IterCh.Element.Name);
        End While;
    End If;
End Sub UserProc;

После выполнения примера в окно консоли будет выведен первый элемент справочника и его дочерние элементы.

Пример Fore.NET

Для выполнения примера в репозитории предполагается наличие репозитория НСИ с идентификатором «RDS». Данный репозиторий должен содержать табличный справочник НСИ с идентификатором «DIC».

Imports Prognoz.Platform.Interop.Rds;

[STAThread]
Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    rdsKey: uinteger;
    RdsInst: IRdsDictionaryInstance;
    elSearch: IRdsDictionaryElementsSearch;
    Dict: IRdsDictionary;
    Iter: IRdsElementsIterator;
    IterCh: IRdsElementsIterator;
Begin
    mb := Params.Metabase;
    rdsKey := mb.GetObjectKeyById("RDS");
    // Получаем справочник, в котором будет выполняться поиск
    RdsInst := mb.ItemByIdNamespace["DIC", rdsKey].Open(NullAs IRdsDictionaryInstance;
    Dict := RdsInst.Dictionary;
    // Создаем объект для поиска по справочнику
    elSearch := RdsInst.CreateSearch();
    // Проверяем: выполняется ли поиск среди объектов, полученных из итератора
    If Not elSearch.IsIterator Then
        // Создаем итератор
        Iter := RdsInst.BigElements.CreateIterator(1100NullNull);
        // Устанавливаем созданный итератор для объекта, выполняющего поиск
        elSearch.SetIterator(Iter);
        // Выводим элементы итератора в окно консоли
        System.Diagnostics.Debug.WriteLine("Элементы итератора:");
        Iter.First(); Iter.Next();
        System.Diagnostics.Debug.WriteLine(Iter.Element.Name);
        IterCh := Iter.CreateChildrenIterator(Iter.Element, 0True);
        IterCh.First();
        While IterCh.Next() Do
            System.Diagnostics.Debug.WriteLine("  " + IterCh.Element.Name);
        End While;
    End If;
End Sub;

После выполнения примера в окно консоли будет выведен первый элемент справочника и его дочерние элементы.

См. также:

IRdsElementsIterator