Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Цикл "Для каждого"

...

Версия 10 (Java)

Группа действий: Базовые действия

...

Описание

Данное действие предназначено для обеспечения выполнения заданной итерации по всем элементам коллекции.  Для Для добавления в тело цикла последовательности действий необходимо переместить их на контур действия "Цикл "Для каждого".

Иконка действия

Image Removed

...

Image Added

Параметры и их настройки

Свойство
Англ. наименование
ОписаниеТипПример заполнения
Обязательность заполнения
Обязательность заполнения поля
Параметры
Коллекция
Collection
Коллекция объектов, проход по которым будет осуществляться в циклеRobin.Collection
Да
Результаты
ОбъектОбъект, в который будет помещен каждый элемент коллекции во время выполнения итерацииRobin
.CollectionКоллекция_значенийДаИдентификаторSequence Id

Идентификатор последовательности действий, которая должна выполняться на каждом шаге цикла.

!! Данный параметр не отображается и назначается системой автоматически.

Robin.Internal.SequenceId

Да

Действия в последовательности должны быть

РезультатыОбъектObject

Объект, в который будет помещен каждый элемент коллекции.

Robin.Object

ITERATION_ACTUAL_STATE

Особые условия использования

.Object

Особые условия использования

Порядок работы с циклом "Для каждого"

  1. Выбрать действие "Для каждого" из группы действий "Базовые действия" и перенести в сценарий. 
    Image Added
  2. Заполнить тело цикла необходимыми действиям.
    Пример заполнения:
    Image Added
  3. Заполнить параметры действия.
    1. Коллекция (список значений, которые будут обработаны в цикле).
      Пример заполнения параметров:
      Image Added


4. Результат работы цикла: объект, в который будет помещен каждый элемент коллекции во время выполнения итерации.

Сравнение циклов "Для" и "Для каждого".

Цикл "Для" выполнит работу заданное количество раз. Итератор будет принимать значения от начального заданного значения до конечного с шагом, указанным в поле "Инкремент".
Цикл "Для каждого" последовательно работает с элементами выбранной коллекции. Количество итераций равно количеству элементов в коллекции, выбранной на входе.
Таким образом результат цикла "Для" это число, а "Для каждого" объект.

Пример использования

Задача

Существует коллекция переменных с типом "Число", содержащие соответственно значение "(1988, 8, 2, 4)".
Необходимо завершить работу цикла, пока значение числовой переменной не будет равно значению "2".

Решение

  1. Добавить цикл "Для каждого".

  2. Добавить действие "Равно".

  3. Добавить условие "Если". В ветвь "Истина" добавить сообщение в лог и прерывание цикла.

Реализация

  1. Создаем переменную с типом "Коллекция". В коллекцию вносим значения (1988, 8, 2, 4) типа "Число".
    Image Added
    Image Added

  2. Перемещаем в рабочее пространство студии действие Цикл "Для каждого".

    1. Параметр "Коллекция". Указываем созданную коллекцию"Коллекция_значений". В ходе работы робота, цикл будет проходить по каждому из значений в коллекции.
      Image Added


  3. Перемещаем в рабочее пространство студии действие "Равно", внутрь цикла "Для каждого".

    1. Параметр "Первый операнд". В данном параметре указываем объект текущей итерации цикла "Для каждого".

    2. Параметр "Второй операнд". В данном параметре указываем число "2". При нахождении числа 2 в цикле "Для каждого", цикл закончит свою работу.
      Image Added

  4. Перемещаем в рабочее пространство студии действие "Если", внутрь цикла "Для каждого".

    1. Параметр "Условие". В данном параметре указывается результат действия "Равно". Если результат действия "Равно" - true, то робот пойдет по ветке "Истина", если - false, то - по ветке "Ложь".
      Image Added

    2. В ветке "Истина" действия "Если" перемещаем действие "Сообщение в лог".
      Image Added

    3. В ветке "Истина" действия "Если" перемещаем действие "Прервать цикл"

  5. Запускаем робота по кнопке "Запуск" в верхней панели. Итоговая схема робота будет выглядеть следующим образом.
    Image Added

Результат

Робот отработал успешно. Алгоритм прошел по циклу и был прерван после того как в коллекции было найдено значение "2".
Image Added

Кейс "Сортировка". Цикл "Для каждого"

Задача

 В папке находятся файлы с расширением .xls(x) и .docx. Необходимо создать папки с названием расширения и распределить файлы по папкам.
Image Added

Решение

  1. На рабочую область перенести действия "Получить содержимое папки" и "Для каждого".
    Image Added

  2. Заполнить параметры действий.

    1. Действие "Получить содержимое папки".
      В строке "Папка" указать путь до папки с файлами, которые необходимо рассортировать.
      В поле  "Тип объектов" указать значение  "только файлы".
      Image Added

    2. Действие "Для каждого".
      В строке "Коллекция" указать результат выполнения действия "Получить содержимое папки".
      Image Added

  3. В тело цикла поместить следующие действия в указанном порядке:

    1. "Получить информацию о файле";

    2. "Извлечь с позиции";

    3. "Найти папку";

    4. "Получить длину";

    5. "Если";

    6. На ветвь "Истина" переместить действия:
      "Получить значение по индексу";
      "Конвертировать данные";
      "Переместить файл";

    7. На ветвь "Ложь" переместить действия:
      "Создать новую папку";
      "Переместить файл";

  4. Заполнить параметры действий.

    1. Для действия "Получить информацию о файле":
      Параметр "Файл" - ссылка на объект, обрабатываемый в момент итерации цикла.
      Image Added

    2. Для действия "Извлечь с позиции";
      Параметр "Исходный текст" - результат "Расширение" действия "Получить информацию о файле".
      Параметр "Позиция" - 1.
      Параметр "Длина" - если данный параметр не заполнен, то текст извлекается с заданной позицией до конца.
      Image Added

    3. Для действия "Найти папку". 
      Параметр "Папка для поиска" - путь до папки, где храниться подпапка для сортировки файлов.
      Параметр "Шаблон поиска" - результат действия "Извлечь с позиции".
      Image Added

    4. Для действия "Получить длину". 
      Параметр "Коллекция или массив" - результат действия "Найти папку".
      Image Added

    5. Для действия "Если". 
      С помощью инструмента построения выражения в параметр условия записать логический оператор "Больше чем", где первый операнд – результат действия "Получить длину", а второй – 0.
      Image Added
      Image Added

    6. Для действия "Получить значение по индексу".
      Параметр "Коллекция" - результат действия "Найти папку".
      Параметр "Индекс" - 0.
      Image Added

    7. Для действия "Конвертировать данные". 
      Параметр "Источник" - результат действия "Путь к папке". 
      Параметр "Тип" - путь к папке.
      Image Added

    8. Для действия "Переместить файл".
      Параметр "Файл" - ссылка на объект, обрабатываемый в момент итерации цикла.
      Параметр "Папка назначения" - результат действия "Конвертировать данные".
      Image Added

    9. Для действия "Создать новую папку". 
      Параметр "Родительская папка" - путь до папки, где , где храниться подпапка для сортировки файлов.
      Параметр "Имя" - результат действия "Извлечь с позиции".
      Image Added

    10. Для действия "Переместить файл".
      Параметр "Файл" - ссылка на объект, обрабатываемый в момент итерации цикла.
      Параметр "Папка назначения" - результат действия "Создать новую папку".
      Image Added

Результат

Робот отработал успешно.
Image Added
Алгоритм прошел по циклу, рассортировывая файлы по папкам.
Image Added
Image Added
Image AddedОтсутствуют.