Цикл "Для каждого" / Loop For Each
Группа действий: Базовые действия
Данное действие предназначено для обеспечения заданной итерации по элементам коллекции. Для добавления в тело цикла последовательности действий необходимо переместить их на контур действия "Цикл "Для каждого".
Настройки
Свойство | Англ. наименование | Описание | Тип | Пример заполнения | Обязательность заполнения поля |
---|---|---|---|---|---|
Параметры | |||||
Коллекция | Collection | Коллекция объектов, проход по которым будет осуществляться в цикле. | Коллекция | Коллекция_значений | Да |
Идентификатор | Sequence Id | Идентификатор последовательности действий, которая должна выполняться на каждом шаге цикла. !! Данный параметр не отображается и назначается системой автоматически. | Идентификатор последовательности действий | Да Действия в последовательности должны быть | |
Результаты | |||||
Объект | Object | Объект, в который будет помещен каждый элемент коллекции. | Объект | ITERATION_ACTUAL_STATE |
Особые условия использования
Отсутствуют.
Порядок работы с циклом «Для каждого»:
1.Выбрать действие «Для каждого» из группы действий «Базовые действия» и перенести в сценарий;
2. Заполнить тело цикла необходимыми действиями;
Пример заполнения:
3. Заполнить параметры действия
- Коллекция (список значений, которые будут обработаны в цикле)
Пример заполнения параметров:
4. Результат работы цикла: объект, в который будет помещен каждый элемент коллекции во время выполнения итерации.
Пример использования
Задача:
Существует коллекция переменных с типом "Массив чисел" и "Число", содержащие соответственно значение "(1988, 8, 2, 4)" и "0".
Необходимо завершить работу цикла, пока значение числовой переменной не будет равно значению "2".
Решение:
- Добавить цикл "Для каждого".
- Добавить условие "Если". В ветвь "Нет" добавить прерывание цикла и сообщение в лог.
- Сообщение в лог.
Реализация:
- Создаем и добавляем в коллекцию "Коллекция_значений" переменную с типом "Число", которая будет являться частью условия "Если" и содержать значение "0".
- Создаем и добавляем в коллекцию "Коллекция_значений" переменную с типом "Массив чисел" и элементами"(1988, 8, 2, 4)", проход по которым будет осуществляться в цикле.
- Открываем группу действий "Базовые действия".
- Помещаем в рабочее пространство студии действие "Цикл "Для каждого".
Настройка действия:- Параметр "Коллекция". Выбираем коллекцию "Коллекция_значений", проход по объектам которой будет осуществляться в цикле.
- Параметр "Объект". Выбираем переменную "ITERATION_ACTUAL_STATE", в которую будет помещен каждый элемент коллекции.
- Помещаем в рабочее пространство студии действие "Если" (см. описание действия "Если").
- Помещаем в рабочее пространство действия "Если" ветви "Нет" действие "Сообщение в лог" (см. описание действия "Сообщение в лог").
- Помещаем в рабочее пространство действия "Если" ветви "Нет" действие "Прервать цикл" (см. описание действия "Прервать цикл").
- Помещаем в рабочее пространство студии действие "Сообщение в лог" (см. описание действия "Сообщение в лог").
- Запускаем робота по кнопке "Запуск" в верхней панели.
Результат:
Алгоритм прошел по циклу и был прерван после установки переменной значения "2".
Кейс «Сортировка». Цикл «Для каждого».
Задача: В папке находятся файлы с расширением .xls(x) и .docx. Необходимо создать папки с названием расширения и распределить файлы по папкам.
Решение:
На рабочую область перенести действия «Получить содержимое папки» и «Для каждого».
2. Заполнить параметры действий.
а. Действие «Получить содержимое папки».
В строке «Папка» указать путь до папки с файлами, которые необходимо рассортировать.
В поле «Тип объектов» указать значение "только файлы".
b. Действие «Для каждого».
В строке «Коллекция» указать результат выполнения действия «Получить содержимое папки»
Пример:
3. В тело цикла поместить следующие действия в указанном порядке:
- «Получить информацию о файле»;
- «Извлечь с позиции»;
- «Найти папку»;
- «Получить длину»;
- «Если»
- На ветвь «Истина» поставить действия:
i. «Получить значение по индексу»;
ii. Конвертировать данные;
iii. «Переместить файл»;
g. На ветвь «Ложь» установить действия:
i. «Создать новую папку»;
ii. «Переместить файл»;
4. Заполнить параметры действий.
Для действия «Получить информацию о файле»:
- Параметр «Файл» - ссылка на объект, обрабатываемый в момент итерации цикла.
- Параметр «Свойство» - «Тип».
b. Для действия «Извлечь с позиции»;
- Параметр «Исходный текст» - результат действия «Получить информацию о файле».
- Параметр «Позиция» - 1.
- Параметр «Длина» - если данный параметр не заполнен, то текст извлекается с заданной позицией до конца.
с. Для действия «Найти папку».
- Параметр «Папка для поиска» - путь до папки, где храниться подпапка для сортировки файлов.
- Параметр «Шаблон поиска» - результат действия «Извлечь с позиции».
d. Для действия «Получить длину».
Параметр «Коллекция или массив» - результат действия «Найти папку».
е. Для действия «Если».
С помощью инструмента построения выражения в параметр условия записать логический оператор «Больше чем», где первый операнд – результат действия «Получить длину», а второй – 0.
f. Для действия «Получить значение по индексу».
- Параметр «Коллекция» - результат действия «Найти папку».
- Параметр «Индекс» - 0.
g. Для действия «Конвертировать данные».
- Параметр «Источник» - результат действия «Путь к папке».
- Параметр «Тип» - путь к папке.
h. Для действия «Переместить файл».
- Параметр «Файл» - ссылка на объект, обрабатываемый в момент итерации цикла.
- Параметр «Папка назначения» - результат действия «Конвертировать данные».
j. Для действия «Создать новую папку».
- Параметр «Родительская папка» - путь до папки, где , где храниться подпапка для сортировки файлов.
- Параметр «Имя» - результат действия «Извлечь с позиции».
k. Для действия «Переместить файл».
- Параметр «Файл» - ссылка на объект, обрабатываемый в момент итерации цикла.
- Параметр «Папка назначения» - результат действия «Создать новую папку».
Результат: Алгоритм прошел по циклу, рассортировывая файлы по папкам.