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

# Použijte iterátor

> Procházejte pole záznamů a provádějte akce s každou položkou.

Iterátor vám umožní procházet pole záznamů a provádět akce na každém z nich. Je zásadní pro pracovní postupy, které potřebují zpracovat více záznamů vrácených akcí Search Records nebo přijatých přes webhooky.

## Kdy použít iterátor

| Scénář                         | Příklad                                            |
| ------------------------------ | -------------------------------------------------- |
| **Zpracujte výsledky hledání** | Odešlete e-mail každé nalezené osobě               |
| **Zpracujte pole webhooků**    | Vytvořte záznamy pro každou položku v daném pořadí |
| **Hromadné aktualizace**       | Aktualizujte více záznamů vypočtenými hodnotami    |
| **Upozornění**                 | Upozorněte více osob na událost                    |

## Porozumění iterátoru

Iterátor jako vstup očekává **pole**. Poté:

1. Vezme první položku z pole
2. Spustí všechny akce uvnitř iterátoru s touto položkou
3. Přejde na další položku
4. Opakuje, dokud nejsou zpracovány všechny položky

### Výběr pole, přes které se bude iterovat

Většinu zdrojů polí (Search Records, vícehodnotové pole ve webhooku, hromadný ruční spouštěč) lze vybrat přímo v nástroji pro výběr proměnných.

Když krok **Code** nebo **Logic Function** vrátí *pole nejvyšší úrovně*, jeho výstup se v nástroji pro výběr proměnných zobrazí jako indexované položky (`0`, `1`, `2`, …). Chcete-li iterovat přes celé pole, vyberte u daného kroku možnost **Whole list** — Iterator pak automaticky odvodí strukturu každé položky ze seznamu.

## Základní nastavení

### Příklad: Odeslání e-mailu všem ve výsledcích hledání

**Cíl**: Najděte všechny kontakty v konkrétní společnosti a každému pošlete personalizovaný e-mail.

### Krok 1: Vyhledejte záznamy

1. Přidejte akci **Vyhledat záznamy**
2. Objekt: **People**
3. Filtr: Company se rovná "Acme Inc"
4. To vrátí pole osob

### Krok 2: Zkontrolujte, že existují výsledky

1. Přidejte akci **Filtr**
2. Podmínka: `{{searchRecords.length}}` je větší než 0
3. Tím se zabrání chybám iterátoru při prázdných výsledcích

### Krok 3: Přidejte iterátor

1. Přidejte akci **Iterator**
2. Vstup pole: Vyberte `{{searchRecords}}`
3. Tím vytvoříte smyčku

### Krok 4: Přidejte akce uvnitř iterátoru

Akce umístěné za iterátorem se spustí pro každou položku:

1. Přidejte akci **Odeslat e-mail** (uvnitř iterátoru)
2. Komu: `{{iterator.currentItem.email}}`
3. Předmět: Dobrý den, `{{iterator.currentItem.firstName}}`!
4. Tělo: Personalizovaná zpráva využívající pole aktuální položky

### Výsledek

Pokud Search Records vrátí 5 osob, iterátor:

* Odešle e-mail osobě 1
* Odešle e-mail osobě 2
* ... pokračuje pro všech 5

## Přístup k datům aktuální položky

Uvnitř iterátoru použijte `{{iterator.currentItem}}` pro přístup k aktuálnímu záznamu:

| Proměnná                                | Popis                          |
| --------------------------------------- | ------------------------------ |
| `{{iterator.currentItem}}`              | Celý objekt aktuálního záznamu |
| `{{iterator.currentItem.id}}`           | ID záznamu                     |
| `{{iterator.currentItem.email}}`        | Pole e-mailu                   |
| `{{iterator.currentItem.company.name}}` | Název související společnosti  |
| `{{iterator.index}}`                    | Aktuální pozice v poli (od 0)  |

V nástroji pro výběr proměnných můžete buď přejít do konkrétního pole aktuální položky, nebo zvolit **Use the whole item** pro odkaz na celou aktuální položku (`{{iterator.currentItem}}`). Výběr celé položky je užitečný, když chcete předat celý záznam přímo do následujícího kroku, místo abyste ho znovu sestavovali pole po poli.

## Běžné vzory

### Aktualizace více záznamů

**Cíl**: Označit všechny zpožděné úkoly jako "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
```

### Vytváření záznamů z pole

**Cíl**: Webhook přijme objednávku s více položkami, vytvořte záznam pro každou z nich

```
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}}
```

### Podmíněné zpracování uvnitř smyčky

**Cíl**: Posílat e-mail pouze kontaktům s platnými e-mailovými adresami

```
1. Search Records (People)
2. Iterator (searchRecords)
   └── Filter (currentItem.email is not empty)
       └── Send Email
           - To: {{iterator.currentItem.email}}
```

## Řešení potíží

### "Iterátor očekává pole"

**Příčina**: Předali jste jeden záznam místo pole.

**Řešení**: Ujistěte se, že předáváte výsledek akce Search Records nebo pole, nikoli jeden záznam.

```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```

### Iterátor se nespouští

**Příčina**: Pole je prázdné.

**Řešení**: Před iterátor přidejte filtr pro kontrolu délky pole:

```
Filter: {{searchRecords.length}} > 0
```

### Akce se spouštějí příliš mnohokrát

**Příčina**: Search Records vrátil více záznamů, než se očekávalo.

**Řešení**:

* Přidejte konkrétnější filtry do akce Search Records
* Nastavte limit v akci Search Records (max. 200)
* Přidejte filtr uvnitř iterátoru pro doplňující podmínky

## Aspekty výkonu

* **Spotřeba kreditů**: Každá iterace spotřebuje kredity za své akce
* **Čas**: Zpracování velkých polí trvá déle
* **Limity**: Zvažte dávkové zpracování velmi velkých operací
* **Omezení rychlosti**: Volání externích API mohou při mnoha iteracích narazit na limity rychlosti

## Osvědčené postupy

1. **Před iterátorem vždy zkontrolujte délku pole**, abyste předešli chybám
2. **Přidávejte filtry uvnitř smyček**, pokud není potřeba zpracovat všechny položky
3. **Přejmenujte krok iterátoru**, aby popisoval, co prochází
4. **Testujte s malými poli** před zpracováním velkých datových sad
5. **Sledujte spuštění pracovních postupů**, abyste zajistili, že iterace proběhnou podle očekávání

## Související

* [Akce pracovních postupů](/l/cs/user-guide/workflows/capabilities/workflow-actions)
* [Jak používat větve](/l/cs/user-guide/workflows/capabilities/use-branches-in-workflows)
* [Často kladené dotazy k pracovním postupům](/l/cs/user-guide/workflows/how-tos/need-more-help/workflows-faq)
