Перейти к основному содержанию
Итератор позволяет перебирать массив записей и выполнять действия для каждой из них. Он необходим для рабочих процессов, которым нужно обрабатывать несколько записей, возвращённых действием Search Records или полученных через вебхуки.

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

СценарийПример
Обработка результатов поискаОтправить письмо каждому найденному человеку
Обработка массивов вебхуковСоздать записи для каждого элемента по порядку
Массовые обновленияОбновить несколько записей с рассчитанными значениями
УведомленияОповестить нескольких людей о событии

Понимание итератора

Итератор ожидает на входе массив. Затем он:
  1. Берёт первый элемент массива
  2. Выполняет все действия внутри итератора с этим элементом
  3. Переходит к следующему элементу
  4. Повторяет, пока все элементы не будут обработаны

Базовая настройка

Пример: отправка письма всем из результатов поиска

Цель: найти всех контактов в определённой компании и отправить каждому персонализированное письмо.

Шаг 1: Поиск записей

  1. Добавьте действие Search Records
  2. Объект: Люди
  3. Фильтр: Company равно “Acme Inc”
  4. Это возвращает массив людей

Шаг 2: Проверка наличия результатов

  1. Добавьте действие Фильтр
  2. Условие: {{searchRecords.length}} больше 0
  3. Это предотвращает ошибки итератора при пустых результатах

Шаг 3: Добавьте итератор

  1. Добавьте действие Iterator
  2. Входной массив: выберите {{searchRecords}}
  3. Это создаёт цикл

Шаг 4: Добавьте действия внутри итератора

Действия, добавленные после итератора, выполняются для каждого элемента:
  1. Добавьте действие Send Email (внутри итератора)
  2. Кому: {{iterator.currentItem.email}}
  3. Тема: Привет, {{iterator.currentItem.firstName}}!
  4. Текст письма: персонализированное сообщение с использованием полей текущего элемента

Результат

Если Search Records возвращает 5 человек, то итератор:
  • Отправляет письмо первому человеку
  • Отправляет письмо второму человеку
  • … и так для всех 5

Доступ к данным текущего элемента

Внутри итератора используйте {{iterator.currentItem}}, чтобы обратиться к текущей записи:
ПеременнаяОписание
{{iterator.currentItem}}Весь объект текущей записи
{{iterator.currentItem.id}}ID записи
{{iterator.currentItem.email}}Поле электронной почты
{{iterator.currentItem.company.name}}Название связанной компании
{{iterator.index}}Текущая позиция в массиве (с нуля)

Типовые шаблоны

Обновление нескольких записей

Цель: пометить все просроченные задачи как “Late”
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
2. Filter (length > 0)
3. Iterator (searchRecords)
   └── Update Record
       - Object: Tasks
       - Record: {{iterator.currentItem.id}}
       - Status: Late

Создание записей из массива

Цель: вебхук получает заказ с несколькими позициями; создайте запись для каждой
1. Webhook Trigger (receives items array)
2. Filter (items.length > 0)
3. Iterator (trigger.body.items)
   └── Create Record
       - Object: Order Items
       - Name: {{iterator.currentItem.name}}
       - Quantity: {{iterator.currentItem.qty}}
       - Related Order: {{trigger.body.orderId}}

Условная обработка внутри цикла

Цель: отправлять письма только контактам с действительными адресами электронной почты
1. Search Records (People)
2. Iterator (searchRecords)
   └── Filter (currentItem.email is not empty)
       └── Send Email
           - To: {{iterator.currentItem.email}}

Устранение неполадок

”Iterator expects an array”

Причина: вы передали одну запись вместо массива. Решение: убедитесь, что вы передаёте результат действия Search Records или поле-массив, а не одну запись.
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}

Итератор не запускается

Причина: массив пуст. Решение: добавьте фильтр перед итератором, чтобы проверить длину массива:
Filter: {{searchRecords.length}} > 0

Действия выполняются слишком много раз

Причина: действие Search Records вернуло больше записей, чем ожидалось. Решение:
  • Добавьте более точные фильтры в Search Records
  • Установите ограничение в Search Records (макс. 200)
  • Добавьте фильтр внутри итератора для дополнительных условий

Особенности производительности

  • Расход кредитов: каждая итерация потребляет кредиты на свои действия
  • Время: обработка больших массивов занимает больше времени
  • Ограничения: рассмотрите пакетную обработку очень больших операций
  • Лимиты скорости: при большом числе итераций внешние вызовы API могут упираться в лимиты скорости

Лучшие практики

  1. Всегда проверяйте длину массива перед итератором, чтобы избежать ошибок
  2. Добавляйте фильтры внутри циклов, если обрабатывать нужно не все элементы
  3. Переименуйте шаг Iterator, чтобы он описывал, что именно перебирается
  4. Тестируйте на небольших массивах перед обработкой больших наборов данных
  5. Отслеживайте выполнения рабочих процессов, чтобы убедиться, что итерации завершаются как ожидается

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