> ## Documentation Index
> Fetch the complete documentation index at: https://help.teable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Цикл (пакетная обработка)

> Обрабатывайте несколько элементов одним действием, перебирая массив

<Tip>
  Мы настоятельно рекомендуем создавать Автоматизации с помощью действия «Запустить скрипт», поскольку оно поддерживает все варианты поведения действий, включая те, которые иначе пришлось бы создавать вручную. Просто опишите свои требования ИИ в чате.

  Обратите внимание: если вы добавите действия вручную, ИИ не сможет распознать или изменить их позднее.
</Tip>

Цикл позволяет запускать действие **по одному разу для каждого элемента** массива. Вместо обработки одной Записи или отправки одного письма цикл повторяет действие для каждого элемента списка: массово создаёт Записи, отправляет персонализированные письма списку контактов или выполняет вызовы API для каждого элемента.

Элементы обрабатываются по порядку, а результаты всех итераций возвращаются в виде массива, который можно использовать на последующих шагах.

## Поддерживаемые действия

| Действие               | Поддержка цикла |
| ---------------------- | --------------- |
| Создать Запись         | Да              |
| Обновить Запись        | Да              |
| Отправить письмо       | Да              |
| HTTP-запрос            | Да              |
| Генерация с помощью ИИ | Да              |

## Источники массивов

Для использования цикла нужен массив в качестве входных данных. Распространённые источники:

| Источник                                             | Получаемые данные                                                   |
| ---------------------------------------------------- | ------------------------------------------------------------------- |
| Действие **Получить Записи**                         | Массив Записей из запроса к Таблице                                 |
| Триггер **При получении вебхука**                    | Тело JSON может содержать массивы (например, список позиций заказа) |
| Действие **Генерация с помощью ИИ** (результат JSON) | ИИ может вернуть массив структурированных элементов                 |
| Действие **HTTP-запрос**                             | Ответ API, содержащий массив                                        |
| Действие **Скрипт**                                  | Скрипт может вывести любой массив через `output.set()`              |

## Как настроить

1. Откройте поддерживаемое действие (например, «Создать Запись» или «Отправить письмо»).
2. Нажмите **Циклический запуск** под средством выбора Таблицы (или в области конфигурации действия).
3. В средстве выбора источника данных выберите **переменную-массив** из предыдущего шага. Например, массив Записей из шага «Получить Записи».
4. В области сопоставления Полей теперь отображаются свойства каждого отдельного элемента (а не всего массива). Нажмите **+**, чтобы обратиться к свойствам **текущего элемента**, например к имени, электронной почте или статусу текущей Записи.
5. Сохраните действие. При запуске рабочего процесса действие выполняется по одному разу для каждого элемента массива.

## Как обращаться к текущему элементу

Когда цикл включён, средство выбора переменных **+** показывает свойства текущего элемента итерации. Например:

* При переборе результата действия «Получить Записи» можно обращаться к `текущий элемент → fields → Name`, `текущий элемент → fields → Email` и т. д.
* При переборе массива из вебхука можно обращаться к `текущий элемент → product_name`, `текущий элемент → quantity` и т. д.

Это отличается от режима без цикла, где вы обращаетесь ко всему массиву или конкретному индексу.

## Конкретный пример: отправка писем с напоминанием о просроченных задачах

1. **Триггер:** В запланированное время — каждый день в 9:00.
2. **Действие 1:** Получить Записи — из Таблицы «Задачи» с фильтром: дата выполнения раньше сегодняшней И статус не равен «Выполнено».
3. **Действие 2:** Отправить письмо с включённым **Циклом**, источник данных = массив Записей из действия 1.
   * **Кому:** Поле электронной почты исполнителя текущего элемента.
   * **Тема:** `Напоминание: срок задачи «{{current item → Task Name}}» истёк`
   * **Текст:** `Здравствуйте, {{current item → Assignee Name}}! Срок выполнения задачи «{{current item → Task Name}}» истёк {{current item → Due Date}}. Обновите её.`

Результат: по одному персонализированному письму для каждой просроченной задачи.

## Массив в теле HTTP-запроса

Для действий «HTTP-запрос» цикл предлагает специальный режим **Массив в теле**. Вместо отправки отдельного HTTP-запроса для каждого элемента (что может быть медленно и приводить к превышению ограничений скорости) режим «Массив в теле» отправляет **весь массив как единый массив JSON** в одном запросе.

Это полезно, когда внешний API поддерживает пакетные операции, например создание нескольких Записей за один вызов API или отправку пакета событий в аналитический сервис.

Чтобы использовать массив в теле:

1. Включите цикл для действия «HTTP-запрос».
2. Выберите режим **Массив в теле** вместо стандартного режима обработки отдельных элементов.
3. Весь массив будет сериализован как массив JSON и отправлен в теле запроса.

## Вопросы производительности

* Цикл обрабатывает элементы **последовательно**, а не параллельно. Перебор 100 элементов займёт примерно в 100 раз больше времени, чем одно выполнение.
* Для больших массивов (сотен или тысяч элементов) проверьте, может ли внешнее действие принимать пакетные входные данные. Если API это поддерживает, используйте массив в теле HTTP-запроса.
* Если вы перебираете результат действия «Получить Записи» и выполняете HTTP-запрос для каждой Записи, учитывайте ограничения скорости внешнего API.
* Для очень больших наборов данных разделите работу на небольшие пакеты с помощью пагинации в действии «Получить Записи» (Skip/Take) и нескольких запусков Автоматизации.

## Когда использовать

* **Массовое создание Записей.** Получите Записи из одной Таблицы и в цикле создайте соответствующие Записи в другой Таблице.
* **Отправка персонализированных писем списку получателей.** Получите список контактов и в цикле отправьте каждому персонализированное письмо.
* **Обновление нескольких Записей.** Получите Записи, соответствующие условию, и в цикле обновите каждую из них (например, присвойте всем просроченным задачам статус «Эскалировано»).
* **Вызовы API для каждой Записи.** Поочерёдно передавайте данные каждой Записи во внешнюю систему.
* **Обработка пакета Записей с помощью ИИ.** Переберите Записи и используйте действие «Генерация с помощью ИИ» для классификации, обобщения или извлечения данных из каждой из них.

## Советы

* Перед включением цикла всегда проверяйте размер массива. Если действие «Получить Записи» возвращает 1 000 Записей, цикл выполнится 1 000 раз.
* Если цикл создаёт или обновляет Записи в той же Таблице, которая запустила Автоматизацию, остерегайтесь повторного запуска. Используйте фильтры триггера, чтобы избежать бесконечных циклов.
* Результаты всех итераций цикла доступны последующим шагам в виде массива, но для очень больших циклов этот массив может оказаться объёмным. Обращайтесь только к необходимым данным.

## Связанные материалы

* [Получить Записи](/ru/basic/automation/actions/records/get-records) — наиболее распространённый источник массивов для цикла
* [Создать Запись](/ru/basic/automation/actions/records/create-record) — часто используется внутри цикла для массового создания Записей
* [HTTP-запрос](/ru/basic/automation/actions/logic/http-request) — часто используется внутри цикла для вызовов API по каждому элементу
* [Отправить письмо](/ru/basic/automation/actions/communication/send-email-overview) — часто используется внутри цикла для массовой отправки писем
