> ## 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.

# Vzorcová pole

> Vytvářejte vzorcová pole pomocí pracovních postupů, dokud nebude k dispozici nativní podpora.

Twenty zatím nepodporuje nativní vzorcová pole (dostupná v roce 2026), ale stejného výsledku můžete dosáhnout pomocí pracovních postupů. Toto dočasné řešení vám umožní automaticky počítat a vyplňovat hodnoty polí — od jednoduchých zřetězení až po složitou obchodní logiku.

## Běžné scénáře použití

| Případ použití           | Příklad vzorce                 |
| ------------------------ | ------------------------------ |
| **Celé jméno**           | Křestní jméno + " " + Příjmení |
| **Očekávaná částka**     | Částka × Pravděpodobnost       |
| **Počet dní do termínu** | Termín splnění - Dnes          |
| **Počet dní ve fázi**    | Dnes - Datum vstupu do fáze    |
| **Skóre leadu**          | Body podle více kritérií       |

<Tip>
  Kompletní příklad sledování času ve fázích kanálu najdete v článku [Jak dlouho zůstávají příležitosti v jednotlivých fázích](/l/cs/user-guide/views-pipelines/how-tos/track-time-in-stage).
</Tip>

## Základní vzorec: Zřetězení

### Příklad: Automatické vyplnění celého jména

**Cíl**: Automaticky spojit křestní jméno a příjmení do pole pro celé jméno.

### Nastavení

1. **Spouštěč**: Záznam je aktualizován nebo vytvořen (Lidé)

2. **Filtr**: Ověřte, že se změnilo křestní jméno nebo příjmení

3. **Akce kódu**:

```javascript theme={null}
export const main = async (params) => {
  const { firstName, lastName } = params;

  const fullName = [firstName, lastName]
    .filter(Boolean)
    .join(' ');

  return { fullName };
};
```

4. **Aktualizovat záznam**: Nastavte Celé jméno na `{{code.fullName}}`

## Číselný vzorec: Očekávaná částka

### Příklad: Výpočet očekávaných tržeb

**Cíl**: Vynásobit částku příležitosti pravděpodobností a získat očekávanou částku.

Viz [Jak zobrazit očekávanou částku v kanálu](/l/cs/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) pro kompletní pracovní postup.

### Rychlé nastavení

1. **Spouštěč**: Záznam je aktualizován (Příležitosti, pole Částka NEBO Pravděpodobnost)

2. **Akce kódu**:

```javascript theme={null}
export const main = async (params) => {
  const { amount, probability } = params;

  const expectedAmount = (amount || 0) * (probability || 0) / 100;

  return { expectedAmount };
};
```

3. **Aktualizovat záznam**: Nastavte Očekávanou částku na `{{code.expectedAmount}}`

## Datumový vzorec: Výpočet počtu dní

### Příklad: Počet dní do termínu úkolu

**Cíl**: Spočítat, kolik dní zbývá do termínu úkolu.

### Nastavení

1. **Spouštěč**: Záznam je aktualizován nebo vytvořen (Úkoly, pole Termín)

2. **Akce kódu**:

```javascript theme={null}
export const main = async (params) => {
  const { dueDate } = params;

  if (!dueDate) {
    return { daysUntilDue: null };
  }

  const due = new Date(dueDate);
  const today = new Date();
  const diffTime = due - today;
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return { daysUntilDue: diffDays };
};
```

3. **Aktualizovat záznam**: Nastavte Počet dní do termínu na `{{code.daysUntilDue}}`

<Note>
  Záporné hodnoty označují úkoly po termínu. Toto pole můžete použít k filtrování nebo řazení úkolů podle naléhavosti.
</Note>

## Podmíněný vzorec: Skóre leadu

### Příklad: Výpočet skóre leadu na základě kritérií

**Cíl**: Ohodnotit leady podle velikosti společnosti, odvětví a zapojení.

### Nastavení

1. **Spouštěč**: Záznam je aktualizován (Lidé nebo Společnosti)

2. **Akce kódu**:

```javascript theme={null}
export const main = async (params) => {
  const { companySize, industry, hasEmail, hasPhone, source } = params;

  let score = 0;

  // Company size scoring
  if (companySize === 'Enterprise') score += 30;
  else if (companySize === 'Mid-Market') score += 20;
  else if (companySize === 'SMB') score += 10;

  // Industry scoring
  const targetIndustries = ['Technology', 'Finance', 'Healthcare'];
  if (targetIndustries.includes(industry)) score += 25;

  // Contact info scoring
  if (hasEmail) score += 10;
  if (hasPhone) score += 15;

  // Source scoring
  if (source === 'Referral') score += 20;
  else if (source === 'Website') score += 10;

  return { leadScore: score };
};
```

3. **Aktualizovat záznam**: Nastavte Skóre leadu na `{{code.leadScore}}`

## Textový vzorec: Extrakce domény

### Příklad: Získání domény z e-mailu

**Cíl**: Automaticky získat a uložit doménu e-mailu.

### Nastavení

1. **Spouštěč**: Záznam je aktualizován (Lidé, pole E-mail)

2. **Akce kódu**:

```javascript theme={null}
export const main = async (params) => {
  const { email } = params;

  if (!email) return { domain: null };

  const domain = email.split('@')[1]?.toLowerCase();

  return { domain };
};
```

3. **Aktualizovat záznam**: Nastavte pole Doména na `{{code.domain}}`

## Osvědčené postupy

### Výkon

* Spouštějte pouze při relevantních změnách polí
* Pomocí filtrů přeskočte záznamy, které nevyžadují výpočet
* Vyhněte se složitým výpočtům v pracovních postupech s vysokým objemem

### Zpracování chyb

* Před výpočty kontrolujte hodnoty null/undefined
* Používejte výchozí hodnoty, když data chybí
* Vracejte jasné chybové zprávy, když výpočty selžou

### Testování

* Testujte okrajové případy (prázdná pole, nulové hodnoty)
* Před aktivací ručně ověřte výpočty
* Sledujte běhy pracovních postupů kvůli neočekávaným výsledkům

## Související

* [Jak zobrazit očekávanou částku v kanálu](/l/cs/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
* [Jak sledovat čas ve fázi](/l/cs/user-guide/views-pipelines/how-tos/track-time-in-stage)
* [Akce pracovních postupů](/l/cs/user-guide/workflows/capabilities/workflow-actions)
