Оператор For Each

Синтаксис

$ ForEachStatement = FOR EACH ident1 IN ident2 DO StatementSequence END FOR ";"

Описание

Оператор For Each обеспечивает циклическое повторение вложенной в него последовательности операторов для каждого элемента коллекции. Цикл For Each выполняется, если в коллекции есть хотя бы один элемент. После начала выполнения цикла, операторы выполняются для первого элемента коллекции ident2, значение которого помещается в переменную ident1; если в коллекции существуют еще элементы, операторы в цикле выполняются последовательно для всех элементов. Когда элементов более нет, цикл прекращается и управление передается оператору, расположенному непосредственно после оператора End For.

Данный оператор оптимизирован для работы с массивом элементов справочников, реализуемым интерфейсом IDimElementArray. В результате работы в цикле будут возвращаться номера элементов справочников, содержащихся в коллекции.

Пример

Sub ForEachSample;
Var
    d: Double;
    Arr: Array Of Double;
    TabSheetBox1: TabSheetBox;
Begin
    Arr := TabSheetBox1.Source.GetTabSheet.ParseRange("А0:К0").ToDoubleArray(True);
    For Each d In Arr Do
        Debug.Write(d.ToString + " ");
    End For;
End Sub ForEachSample;

После выполнения примера в консоль будут выведены значения всех не пустых ячеек в диапазоне "А0:К0".

Sub ForEachDimArray;
Var
    MB: IMetabase;
    DimInst: IDimInstance;
    Elem: IDimElementArray;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    DimInst := MB.ItemById("D_TO").Open(NullAs IDimInstance;
    Elem := DimInst.RootElements;
    For Each i In Elem Do
        Debug.Write(i.ToString + " ");
    End For;
End Sub ForEachDimArray;

После выполнения примера в консоль будут выведены индексы всех корневых элементов справочника с идентификатором "D_TO".

См. также:

Операторы