snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,167 @@
---
title: Trimiterea e-mailurilor prin fluxuri de lucru
description: Trimiteți automat e-mailuri personalizate folosind acțiunile fluxurilor de lucru.
---
Trimiteți automat e-mailuri atunci când au loc evenimente specifice în CRM—întâmpinați noile contacte, urmăriți oportunitățile sau notificați membrii echipei.
## Cerințe
Înainte de a putea trimite e-mailuri din fluxuri de lucru:
1. Conectați un cont de e-mail în **Settings → Accounts**
2. Asigurați-vă că contul are activate permisiunile de trimitere
## Flux de lucru de bază pentru e-mail
### Exemplu: E-mail de bun venit pentru contacte noi
**Obiectiv**: Trimiteți un e-mail de bun venit atunci când o persoană nouă este adăugată în CRM.
**Configurare**:
1. **Creați fluxul de lucru**: Accesați **Settings → Workflows** și faceți clic pe **+ New Workflow**
2. **Adăugați declanșator**: Selectați **Record is Created** → **People**
3. **Adăugați acțiunea Send Email**:
* Faceți clic pe **+** pentru a adăuga o acțiune
* Selectați **Send Email**
* Configurați e-mailul:
| Câmp | Valoare |
| ----------- | -------------------------------------- |
| **Către** | `{{trigger.object.email}}` |
| **Subiect** | `Bun venit la {{Your Company Name}}` |
| **Corp** | `Hi {{trigger.object.firstName}}, ...` |
4. **Testați și activați**: Testați cu o înregistrare de probă, apoi activați
## Utilizarea variabilelor în e-mailuri
Faceți referire la date din pașii anteriori folosind sintaxa `{{variable}}`:
```text
Hi {{trigger.object.firstName}},
Thank you for connecting with us!
Your company, {{trigger.object.company.name}}, is now in our system.
Best regards,
The Team
```
### Variabile disponibile din declanșatoare
| Tipul Trigger-ului | Variabile comune |
| ----------------------------------- | -------------------------------------- |
| **Înregistrare creată/actualizată** | `{{trigger.object.fieldName}}` |
| **Manual** | `{{trigger.selectedRecord.fieldName}}` |
| **Webhook** | `{{trigger.body.fieldName}}` |
## Avansat: e-mailuri condiționale
### Exemplu: E-mailuri diferite în funcție de sursa lead-ului
**Obiectiv**: Trimiteți e-mailuri de bun venit diferite în funcție de sursa lead-ului.
**Configurare**:
1. **Declanșator**: Record is Created (People)
2. **Adăugați acțiunea de filtrare**:
* Condiție: `{{trigger.object.source}}` este egal cu `"Website"`
* Dacă este adevărat → continuați către e-mailul de bun venit pentru website
3. **Ramificație pentru alte surse**:
* Creați ramificații paralele pentru surse diferite
* Fiecare ramificație are propria acțiune Send Email
## Trimiterea e-mailurilor către mai mulți destinatari
### Exemplu: Notificați echipa când se finalizează tranzacția
**Obiectiv**: Trimiteți un e-mail reprezentantului de vânzări și managerului său atunci când o oportunitate este câștigată.
**Configurare**:
1. **Declanșator**: Record is Updated (Opportunities, Stage = "Closed Won")
2. **Search Records**: Găsiți managerul proprietarului oportunității
3. **Send Email #1**: Către proprietarul oportunității
* Către: `{{trigger.object.owner.email}}`
* Subiect: `Felicitări pentru închiderea {{trigger.object.name}}!`
4. **Send Email #2**: Către manager
* Către: `{{searchRecords.manager.email}}`
* Subiect: `Tranzacție câștigată: {{trigger.object.name}}`
## E-mailuri de urmărire programate
### Exemplu: Urmărire la 3 zile după întâlnire
**Obiectiv**: Trimiteți un e-mail de urmărire la 3 zile după ce o întâlnire este înregistrată.
**Configurare**:
1. **Declanșator**: Record is Created (Activities, Type = "Meeting")
2. **Acțiune de întârziere**: Așteptați 3 zile
3. **Trimite email**:
* Către: Participantul la întâlnire
* Subiect: Revenire la discuția noastră
* Conținut: Faceți referire la detaliile întâlnirii din declanșator
## Atașamente pentru e-mailuri
Puteți atașa fișiere la e-mailurile trimise din fluxuri de lucru. Atașamentul este un fișier static pe care îl încărcați atunci când configurați fluxul de lucru.
### Cum să adăugați un atașament
1. În acțiunea **Trimite e-mail**, faceți clic pe butonul **Atașamente**
2. Faceți clic pentru a încărca un fișier de pe computerul dvs.
3. Fișierul va fi atașat tuturor e-mailurilor trimise de această acțiune
### Cazuri de Utilizare Comune
| Caz de utilizare | Exemplu de fișier |
| ------------------------------------- | --------------------------------------- |
| **E-mailuri de bun venit** | Broșura companiei (PDF) |
| **Secvențe de introducere** | Ghid de inițiere |
| **Mesaje de urmărire pentru vânzări** | Catalog de produse sau listă de prețuri |
| **Confirmări pentru evenimente** | Detalii despre eveniment sau agendă |
<Note>
Atașamentele sunt statice — același fișier este trimis tuturor destinatarilor. Pentru documente dinamice (cum ar fi ofertele personalizate), generați și atașați fișiere folosind o [Funcție logică](/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty).
</Note>
## Cele mai bune practici
### Conținutul emailului
* Păstrați liniile de subiect concise și relevante
* Personalizați cu numele destinatarului
* Includeți un apel clar la acțiune
* Testați emailurile înainte de activare
### Livrabilitate
* Nu trimiteți prea multe emailuri prea repede
* Folosiți semnături de email profesionale
* Evitați cuvintele care declanșează filtrele de spam
* Asigurați opțiuni de dezabonare pentru emailurile de marketing
### Depanare
* Verificați că contul de email este conectat și activ
* Verificați că adresa de email a destinatarului este validă
* Revizuiți rulările fluxului de lucru pentru mesaje de eroare
* Testați mai întâi cu propria dvs. adresă de email
## Conexe
* [Declanșatoare ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-triggers)
* [Acțiuni ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-actions)

View File

@@ -0,0 +1,88 @@
---
title: Utilizați ramuri în fluxuri de lucru
description: Înțelegeți cum funcționează ramurile și cum să controlați care cale este executată.
---
## Cum funcționează ramurile
În editorul de fluxuri de lucru, puteți crea mai multe căi (ramuri) care pornesc dintr-un singur nod. Acest lucru vă permite să creați automatizări complexe cu rezultate diferite.
**Important**: Când rulează un flux de lucru, **toate ramurile se execută în paralel în mod implicit**. Nu există o logică "if/else" integrată pentru a alege o ramură în locul alteia — fiecare cale va rula simultan.
## Controlul ramurii care se execută
Pentru a executa doar o singură ramură pe baza unor condiții specifice, **adăugați un nod Filter la începutul fiecărei ramuri**.
### Exemplu de configurare
1. Creați fluxul de lucru cu mai multe ramuri dintr-un singur nod
2. Adăugați un nod **Filter** ca primul pas în fiecare ramură
3. Setați condiții în fiecare nod Filter pentru a determina când ar trebui să continue acea ramură
4. Vor continua doar ramurile pentru care condițiile din Filter sunt îndeplinite
### Cum funcționează nodurile Filter
* Dacă condiția din Filter este **îndeplinită**: Ramura își continuă execuția
* Dacă condiția din Filter **nu este îndeplinită**: Ramura se oprește la nodul Filter
Acest lucru creează, în mod eficient, o logică condițională în care rulează doar ramura potrivită, pe baza datelor dvs.
## Exemplu: Rutare după valoarea tranzacției
**Scenariu**: Când o tranzacție este închisă, trimiteți notificări diferite în funcție de valoarea tranzacției.
1. **Declanșator**: Opportunity updated (Stage = Closed Won)
2. **Ramura 1**: Filter pentru Amount > $10,000 → Trimiteți mesaj Slack către #big-deals
3. **Ramura 2**: Filter pentru Amount ≤ $10,000 → Trimiteți e-mail managerului de vânzări
Ambele ramuri pornesc, dar doar cea care corespunde sumei tranzacției va continua dincolo de propriul Filter.
## Crearea ramurilor
<Note>
Pentru a crea o ramură nouă dintr-un pas existent, faceți clic pe butonul **+** al acelui pas și adăugați acțiunea. Puteți adăuga mai multe ramuri făcând clic pe **+** de mai multe ori.
</Note>
1. În editorul de fluxuri de lucru, selectați pasul din care doriți să creați o ramură
2. Faceți clic pe butonul **+** pentru a adăuga o acțiune
3. Aceasta creează o ramură
4. Faceți clic din nou pe **+** la același pas pentru a crea ramuri suplimentare
5. Fiecare ramură poate avea propria secvență de acțiuni
## Îmbinarea ramurilor la loc
După ce ramurile paralele își finalizează activitatea, le puteți îmbina la loc într-o singură cale:
1. Finalizați acțiunile din ramuri
2. Adăugați un pas nou care ar trebui să ruleze după toate ramurile
3. Trageți o conexiune de la ultimul pas al fiecărei ramuri către acest pas nou
4. Pasul îmbinat așteaptă ca toate ramurile conectate să se finalizeze înainte de a se executa
### Exemplu: Procesare, apoi notificare
```
Trigger
│
├── Branch A: Update Customer Record
│
└── Branch B: Create Support Ticket
↘ ↙
Merged Step: Send Confirmation Email
```
E-mailul de confirmare este trimis numai după ce atât actualizarea clientului, cât și crearea tichetelor au fost făcute.
## Cele mai bune practici
* Folosiți întotdeauna **noduri Filter** la începutul ramurilor atunci când doriți execuție condițională
* Mențineți condițiile ramurilor **reciproc exclusive** pentru a evita acțiunile duplicate
* Testați fluxurile de lucru cu date diferite pentru a vă asigura că rulează ramurile corecte
* **Redenumiți pașii ramurilor** într-un mod descriptiv pentru a fi clar ce face fiecare cale
* **Îmbinați ramurile** când aveți nevoie de o acțiune finală după procesare în paralel
## Conexe
* [Întrebări frecvente despre fluxuri de lucru](/l/ro/user-guide/workflows/how-tos/need-more-help/workflows-faq) — răspunsuri despre execuția în paralel
* [Acțiuni ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-actions) — acțiuni disponibile pentru ramuri

View File

@@ -0,0 +1,183 @@
---
title: Utilizați Iterator
description: Parcurgeți array-uri de înregistrări pentru a executa acțiuni asupra fiecărui element.
---
Iterator vă permite să parcurgeți un array de înregistrări și să efectuați acțiuni pe fiecare în parte. Este esențial pentru fluxuri de lucru care trebuie să proceseze mai multe înregistrări returnate de Search Records sau primite prin webhook-uri.
## Când să folosiți Iterator
| Scenariu | Exemplu |
| ------------------------------------- | ------------------------------------------------------ |
| **Procesați rezultatele căutării** | Trimiteți e-mail fiecărei persoane găsite |
| **Gestionați array-urile de webhook** | Creați înregistrări pentru fiecare element, în ordine |
| **Actualizări în masă** | Actualizați mai multe înregistrări cu valori calculate |
| **Notificări** | Alertați mai multe persoane despre un eveniment |
## Înțelegerea Iteratorului
Iterator așteaptă un **array** ca intrare. Apoi:
1. Preia primul element din array
2. Rulează toate acțiunile din interiorul Iteratorului cu acel element
3. Trece la următorul element
4. Repetă până când toate elementele sunt procesate
### Selectarea tabloului peste care să se itereze
Majoritatea surselor de tablouri (Search Records, un câmp de tablou dintr-un webhook, un declanșator manual Bulk) pot fi selectate direct în selectorul de variabile.
Când un pas de tip **Code** sau **Logic Function** returnează un *tablou de nivel superior*, rezultatul său apare în selectorul de variabile ca intrări indexate (`0`, `1`, `2`, …). Pentru a itera peste întregul tablou, selectează opțiunea **Whole list** pentru acel pas — Iteratorul deduce apoi automat structura fiecărui element din listă.
## Configurare de bază
### Exemplu: Trimiteți e-mail tuturor din rezultatele căutării
**Obiectiv**: Găsiți toate contactele dintr-o companie specifică și trimiteți fiecăruia un e-mail personalizat.
### Pasul 1: Căutați înregistrări
1. Adăugați acțiunea **Search Records**
2. Obiect: **Persoane**
3. Filtru: Compania este egală cu "Acme Inc"
4. Aceasta returnează un array de persoane
### Pasul 2: Verificați dacă există rezultate
1. Adăugați acțiunea **Filter**
2. Condiție: `{{searchRecords.length}}` este mai mare decât 0
3. Aceasta previne erorile Iteratorului când rezultatele sunt goale
### Pasul 3: Adăugați un Iterator
1. Adăugați acțiunea **Iterator**
2. Intrare pentru array: selectați `{{searchRecords}}`
3. Aceasta creează o buclă
### Pasul 4: Adăugați acțiuni în interiorul Iteratorului
Acțiunile plasate după Iterator rulează pentru fiecare element:
1. Adaugă **Trimitere E-mail** (înăuntrul Iteratorului)
2. Către: `{{iterator.currentItem.email}}`
3. Subiect: Salut `{{iterator.currentItem.firstName}}`!
4. Conținut: Mesaj personalizat folosind câmpurile elementului curent
### Rezultat
Dacă Search Records returnează 5 persoane, Iteratorul:
* Trimite e-mail persoanei 1
* Trimite e-mail persoanei 2
* ... continuă pentru toate cele 5
## Accesarea datelor elementului curent
În interiorul Iteratorului, folosiți `{{iterator.currentItem}}` pentru a accesa înregistrarea curentă:
| Variabilă | Descriere |
| --------------------------------------- | ------------------------------------------- |
| `{{iterator.currentItem}}` | Întregul obiect al înregistrării curente |
| `{{iterator.currentItem.id}}` | ID-ul înregistrării |
| `{{iterator.currentItem.email}}` | Câmp de e-mail |
| `{{iterator.currentItem.company.name}}` | Numele companiei asociate |
| `{{iterator.index}}` | Poziția curentă în array (indexare de la 0) |
În selectorul de variabile, poți fie să intri într-un câmp specific al elementului curent, fie să alegi **Use the whole item** pentru a face referire la întregul element curent (`{{iterator.currentItem}}`). Selectarea întregului element este utilă atunci când vrei să transmiți o înregistrare completă direct într-un pas ulterior, în loc să o reconstruiești câmp cu câmp.
## Tipare comune
### Actualizați mai multe înregistrări
**Obiectiv**: Marcați toate sarcinile întârziate ca "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
```
### Creați înregistrări dintr-un array
**Obiectiv**: Webhook-ul primește o comandă cu mai multe articole, creați o înregistrare pentru fiecare
```
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}}
```
### Procesare condițională în interiorul buclei
**Obiectiv**: Trimiteți e-mail doar contactelor cu adrese valide
```
1. Search Records (People)
2. Iterator (searchRecords)
└── Filter (currentItem.email is not empty)
└── Send Email
- To: {{iterator.currentItem.email}}
```
## Depanare
### "Iterator expects an array"
**Cauză**: Ați transmis o singură înregistrare în loc de un array.
**Remediere**: Asigurați-vă că transmiteți rezultatul acțiunii Search Records sau un câmp de tip array, nu o singură înregistrare.
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
### Iteratorul nu rulează
**Cauză**: Array-ul este gol.
**Remediere**: Adăugați un Filter înainte de Iterator pentru a verifica lungimea array-ului:
```
Filter: {{searchRecords.length}} > 0
```
### Acțiunile rulează de prea multe ori
**Cauză**: Search Records a returnat mai multe înregistrări decât era de așteptat.
**Remediere**:
* Adăugați filtre mai specifice în Search Records
* Setați o limită în Search Records (maxim 200)
* Adăugați un Filter în interiorul Iteratorului pentru condiții suplimentare
## Considerații de performanță
* **Utilizarea creditelor**: Fiecare iterație consumă credite pentru acțiunile sale
* **Timp**: Array-urile mari necesită mai mult timp pentru a fi procesate
* **Limite**: Luați în considerare procesarea în loturi a operațiunilor foarte mari
* **Limite de rată**: Apelurile către API-uri externe pot atinge limitele de rată la multe iterații
## Cele mai bune practici
1. **Verificați întotdeauna lungimea array-ului** înainte de Iterator pentru a evita erorile
2. **Adăugați filtre în interiorul buclelor** când nu toate elementele trebuie procesate
3. **Redenumiți pasul Iterator** pentru a descrie prin ce iterează
4. **Testați cu array-uri mici** înainte de a procesa seturi mari de date
5. **Monitorizați rulările fluxurilor de lucru** pentru a vă asigura că iterațiile se finalizează conform așteptărilor
## Conexe
* [Acțiuni ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-actions)
* [Cum să utilizați ramurile](/l/ro/user-guide/workflows/capabilities/use-branches-in-workflows)
* [Întrebări frecvente despre fluxurile de lucru](/l/ro/user-guide/workflows/how-tos/need-more-help/workflows-faq)

View File

@@ -0,0 +1,332 @@
---
title: Acțiuni Workflow
description: Aflați despre acțiunile disponibile în fluxurile de lucru Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Despre acțiuni
Acțiunile definesc ce se întâmplă după declanșarea unui trigger. Puteți înlănțui mai multe acțiuni pentru a construi automatizări complexe.
<Tip>
* Folosiți selectorul de variabile (faceți clic pe pictograma `(x+)`) pentru a răsfoi datele disponibile din pașii anteriori
* Plasați cursorul peste orice câmp de intrare pentru a vedea din care pas provine o variabilă — util atunci când același câmp (de ex., ID) există în mai mulți pași anteriori
* Dați fiecărei acțiuni un nume descriptiv pentru o mentenanță mai ușoară
</Tip>
## Acțiuni asupra înregistrărilor
<img src="/images/user-guide/workflows/workflow_actions.png" style={{width:'100%'}} />
### Creează înregistrare
Adaugă o nouă înregistrare la un obiect selectat.
**Configurare**:
* Selectați obiectul țintă
* Completați câmpurile obligatorii și opționale
* Folosiți date din pașii anteriori sau introduceți manual valori pentru a completa câmpurile
**Output**: Datele noii înregistrări create sunt disponibile pentru utilizare în pașii următori.
### Actualizați Înregistrarea
Modifică o înregistrare existentă într-un obiect selectat.
<img src="/images/user-guide/workflows/update_record.png" style={{width:'100%'}} />
**Configurare**:
* Selectați obiectul țintă
* Alegeți înregistrarea specifică de actualizat.
* Puteți alege fie o înregistrare specifică, folosind meniul derulant care afișează toate înregistrările disponibile.
* Sau puteți selecta dinamic înregistrarea, desemnând o înregistrare găsită într-un pas anterior, folosind `(x+)`. Nu puteți căuta înregistrarea pe baza unor criterii diferite în această etapă. Dacă încă nu ați identificat înregistrarea, adăugați un pas `Search Record` înaintea acestui pas `Update Record`.
* Selectați câmpurile de modificat și introduceți valori noi
**Output**: Datele înregistrării actualizate sunt disponibile pentru utilizare în pașii următori.
### Ștergeți Înregistrarea
Îndepărtează o înregistrare dintr-un obiect selectat.
**Configurare**:
* Selectați obiectul țintă
* Alegeți înregistrarea specifică de șters
**Output**: Datele înregistrării șterse rămân disponibile pentru utilizare în pașii următori.
### Căutați Înregistrări
Găsește înregistrări într-un obiect selectat folosind condițiile de filtrare.
**Configurare**:
* Selectați obiectul de căutat
* Setați criterii de filtrare pentru a restrânge rezultatele
* Configurați ordonarea și limitele
**Output**: Returnează înregistrările care se potrivesc care pot fi utilizate în pașii următori.
<Note>
**Limită**: Search Records returnează maximum **200 de înregistrări**. Dacă aveți nevoie să procesați mai multe, adăugați filtre specifice pentru a reduce rezultatele sau folosiți fluxuri de lucru programate pentru a procesa în loturi.
</Note>
**Cea mai bună practică**: Utilizați [ramuri](/l/ro/user-guide/workflows/capabilities/workflow-branches) după Search Records pentru a gestiona scenariile "găsit" vs "ne-găsit".
### Upsert Record
Creează o înregistrare nouă sau actualizează una existentă pe baza criteriilor de potrivire. Este util când nu sunteți sigur dacă o înregistrare există deja.
<img src="/images/user-guide/workflows/upsert_double_identifier.png" style={{width:'100%'}} />
**Configurare**:
* Selectați obiectul țintă
* Rețineți ce câmpuri pot fi folosite pentru potrivire: email pentru Persoane, domeniu pentru Companii, ID pentru orice obiect sau orice câmp marcat ca Unique. Va trebui să completați cel puțin unul dintre acestea mai jos.
* Completați valorile câmpurilor. Nu uitați să completați cel puțin unul dintre identificatorii unici.
<Note>
**Potrivirea funcționează de obicei și mai bine când adăugați un singur identificator unic.** De exemplu, captura de ecran de mai jos va potrivi companiile pe baza domeniului lor. ID-ul nu este neapărat necesar.
</Note>
<img src="/images/user-guide/workflows/upsert_simple_identifier.png" style={{width:'100%'}} />
* Folosiți datele din pașii anteriori pentru a completa câmpurile
**Cum funcționează**:
1. Caută o înregistrare care corespunde condițiilor specificate
2. Dacă este găsită → actualizează înregistrarea existentă
3. Dacă nu este găsită → creează o înregistrare nouă
**Output**: Datele înregistrării create sau actualizate sunt disponibile pentru utilizare în pașii următori.
## Acțiuni de flux
### Iterator
**Parcurge un array de înregistrări** returnat de un pas anterior, permițându-vă să efectuați acțiuni pe fiecare înregistrare individual.
**Configurare**:
* Selectați array de înregistrări dintr-un pas anterior (de exemplu, rezultate din Căutare Records, dintr-un declanșator manual cu disponibilitate în grup, dintr-un nod Cod). Când un pas de tip Cod sau funcție logică returnează un array de nivel superior, selectează opțiunea **Whole list** pentru a itera peste întregul rezultat.
* Definiți acțiunile de efectuat pe fiecare înregistrare în buclă.
<Note>
- Puteți adăuga mai multe acțiuni în interiorul unui Iterator.
- Când folosești ramuri în interiorul unui Iterator, asigură-te că ultimul pas al fiecărei ramuri se conectează înapoi la Iterator pentru a închide bucla.
</Note>
* Accesați câmpurile `Current Item`: pentru a utiliza câmpuri din înregistrarea procesată în prezent, faceți clic pe pasul **Iterator**, apoi selectați **Current item**. Lista câmpurilor disponibile din acea înregistrare va fi afișată și poate fi selectată pentru utilizare în acțiunile ulterioare. Poți, de asemenea, să selectezi **Use the whole item** pentru a trimite întregul element curent într-un pas ulterior.
<VimeoEmbed videoId="1146577247" title="Demonstrație video" />
### Filtru
Filtrează înregistrările pe baza condițiilor specificate, permițând trecerea doar a înregistrărilor care îndeplinesc criteriile.
**Configurare**:
* Selectați înregistrarea de filtrat
* Definiți condițiile și criteriile de filtrare
* Configurați care înregistrări ar trebui să treacă la pașii următori
<Note>
1. **Output**: Nodurile Filter nu returnează date — acționează ca porți. Dacă condițiile sunt îndeplinite, fluxul de lucru continuă. Dacă nu, fluxul de lucru se oprește pe acea ramură.
2. Operatorul `IS` poate fi utilizat cu câmpuri numerice. Se comportă ca un `EQUAL`.
</Note>
### Întârziere
Pauzează execuția fluxului de lucru pentru o durată specificată sau până la o anumită dată/oră.
**Tipuri de întârziere**:
| Tip | Descriere |
| ------------------- | -------------------------------------------------------------------- |
| **Durată** | Așteaptă o perioadă de timp specificată (zile, ore, minute, secunde) |
| **Dată programată** | Așteaptă până la o dată și o oră specifice |
**Configurare pentru durată**:
* Setați zile, ore, minute și/sau secunde
* Combinați mai multe unități (de ex., 2 zile și 4 ore)
**Configurare pentru dată programată**:
* Selectați o dată și o oră
* Poate face referire la un câmp de tip dată dintr-un pas anterior (de ex., un follow-up la 3 zile după o întâlnire)
**Cazuri de utilizare**:
* Așteaptă 24 de ore înainte de a trimite un email de follow-up
* Pauzează până la data de închidere a unei oportunități
* Programează acțiuni pentru programul de lucru
<Note>
Data programată nu poate fi în trecut. Dacă este utilizat un câmp de tip dată dintr-un pas anterior și data a trecut deja, fluxul de lucru va eșua.
</Note>
**Limitări și credite**:
* **Fără limită maximă de durată** — puteți seta întârzieri de minute, zile, săptămâni sau mai mult
* Se consumă **1 credit** la executarea nodului Delay, indiferent de durată
* **Nu se consumă credite** în timpul așteptării — o întârziere de 5 minute costă la fel ca o întârziere de 5 zile
## Acțiuni de comunicare
### Trimite email
Trimite un email din fluxul dumneavoastră de lucru. Este excelent pentru emailuri de grup bazate pe șabloane. Emailurile vor arăta ca cele pe care le trimiteți din căsuța de e-mail.
Nu este potrivit pentru newsletter-uri (care necesită formatare mai bogată) sau secvențe automate de e-mail.
**Cerințe prealabile**: Adăugați un cont de email în Settings → Accounts
**Configurare**:
* Selectați contul de email expeditor
<Note>
Puteți trimite emailuri doar din căsuțele poștale sincronizate cu propriul dvs. cont Twenty. Trimiterea din căsuțele poștale ale altor membri ai echipei (de ex., emailul proprietarului contului) este pe roadmap.
</Note>
Pentru toți pașii următori, puteți face referire la variabile din pașii anteriori pentru personalizare.
* Introduceți adresa de email a destinatarului.
<Note>
În acest moment este posibil un singur destinatar.
</Note>
* Setați linia de subiect.
* Compuneți corpul mesajului. Aveţi posibilitatea să formataţi link-uri, să creaţi liste numerotate, liste de puncte de liniuţă, şi să adăugaţi ataşamente.
<Note>
Adăugarea semnăturilor HTML nu este posibilă în acest moment.
</Note>
### Formular
Solicită un formular în timpul execuției fluxului de lucru pentru a colecta intrarea utilizatorului. Răspunsurile pot fi apoi folosite în pașii următori pentru a crea înregistrări, a trimite emailuri sau a executa orice altă acțiune pe baza datelor introduse.
<Warning>
**Formularele sunt concepute doar pentru declanșatoare manuale**. Pentru fluxurile de lucru cu alte declanșatoare (Înregistrare creată, actualizată, etc.), formularele sunt accesibile doar prin interfața de execuție a fluxului de lucru, ceea ce nu este experiența de utilizator așteptată. Un centru de notificare va fi lansat în 2026 pentru a sprijini în mod corespunzător formulare în fluxuri de lucru automate.
</Warning>
**Configurare**:
* Configurați câmpurile pe care utilizatorii vor fi solicitați să le completeze. Pentru fiecare câmp, alegeți
* un tip dintre text, număr, dată, o anumită înregistrare, un câmp select. Câmpurile din toate obiectele sunt disponibile pentru selecţie.
* o etichetă
* o valoare implicită la `Placeholder` (opțional)
* Editați titlul formularului
**Output**: Răspunsurile formularului sunt disponibile pentru utilizare în pașii următori.
**Exemplu**: Fluxul de lucru "Quick Lead" este disponibil implicit în toate locurile de lucru, disponibil oriunde în meniul de comandă `Cmd+K`.
**Cum să completați formularul**:
* Declanşaţi fluxul de lucru manual din Meniul de Comandă `Cmd+K`
* Completați formularul afișat în panoul lateral și faceți clic pe `Submit`.
<Note>
Câmpurile nu pot fi făcute obligatorii.
</Note>
<VimeoEmbed videoId="1147277989" title="Demonstrație video" />
## Acțiuni de integrare
### Cod
Rulați JavaScript personalizat în cadrul fluxului dumneavoastră de lucru.
În fundal, fiecare acțiune de cod este susținută de propria **funcție logică** — o funcție TypeScript pe server, care rulează pe platforma Twenty. Când adaugi o acțiune de cod, Twenty creează o funcție logică dedicată pentru acel pas și îi afișează editorul inline, astfel încât codul pe care îl scrii rămâne asociat cu workflow-ul.
**Configurare**:
* Accesați variabilele din pașii anteriori. Poți edita dinamic numele variabilelor.
<VimeoEmbed videoId="1147281795" title="Demonstrație video" />
* Scrieți cod JavaScript în editor
* Returnați variabilele pentru utilizare în pașii următori
* Testați codul direct în pas
<Note>
Dacă trebuie să utilizați chei API externe în codul dvs., trebuie să le introduceți direct în corpul funcției. Nu puteți configura cheile API în altă parte și să faceți referire la ele în funcția logică.
</Note>
<Tip>
**Lucrați cu array-uri?** Array-urile din sisteme externe sau din pași anteriori pot veni ca stringuri. Consultați [Cum să gestionați array-urile în acțiunile Code](/l/ro/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) pentru soluție.
</Tip>
<Tip>
Faceți clic pe pictograma pătrată din dreapta sus a editorului de cod pentru a-l afișa pe tot ecranul — util, deoarece lățimea implicită a editorului este limitată.
</Tip>
#### Reutilizarea unei funcții logice între workflow-uri
Acțiunea de cod inline este excelentă pentru logică ad-hoc, dar codul pe care îl conține aparține acelui singur pas. Când vrei să partajezi aceeași logică între mai multe workflow-uri — sau să o menții ca sursă versionată într-o aplicație — definește o **funcție logică reutilizabilă** în loc să copiezi și să lipești cod în fiecare acțiune de cod.
O funcție logică este definită o singură dată într-o aplicație (folosind `defineLogicFunction` din SDK) și expusă în constructorul de workflow prin adăugarea `workflowActionTriggerSettings`. După ce aplicația ta este instalată, acea funcție apare ca acțiune separată în constructorul de workflow, alături de acțiunile încorporate. Selectarea acesteia afișează câmpurile de intrare pe care le-ai declarat (cu selectoare de variabile, la fel ca alte acțiuni) și rulează codul tău partajat — fără a fi necesar JavaScript inline.
| | Acțiune de cod | Funcție logică reutilizabilă |
| ---------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------- |
| **Locul în care „trăiește” codul** | Editor inline, legat de un singur pas al workflow-ului | Definită într-o aplicație, versionată în sistemul de control al sursei |
| **Reutilizare** | Copiat și lipit pentru fiecare pas | Adăugată ca acțiune în orice workflow |
| **Intrări** | Variabile conectate în editor | Câmpuri afișate pe baza schemei de intrare declarate |
| **Cel mai potrivit pentru** | Logică rapidă, specifică workflow-ului | Logică partajată, folosită în mai multe workflow-uri |
Ambele rulează pe același runtime pentru funcții logice, astfel încât o acțiune de cod pe care ai prototipat-o inline poate fi ulterior promovată într-o funcție logică reutilizabilă cu modificări minime.
<Tip>
Pentru documentația destinată dezvoltatorilor privind definirea funcțiilor logice și expunerea lor în constructorul de workflow, consultă [Logic Functions](/l/ro/developers/extend/apps/logic/logic-functions) — în special secțiunea **Exposing a function as an AI tool or workflow action** și `workflowActionTriggerSettings`.
</Tip>
### Solicitare HTTP
Trimite o cerere la un API extern ca parte a fluxului dumneavoastră de lucru.
<img src="/images/user-guide/workflows/http_action.png" style={{width:'100%'}} />
**Configurare**:
* Introduceți URL-ul punctului final API. Puteți utiliza parametri din pașii anteriori.
* Selectați metoda HTTP (GET, POST, PUT, PATCH, DELETE)
* Adăugați anteturile și valorile necesare
* Oferiți un exemplu de răspuns pentru previzualizarea structurii
## Acțiuni AI
### Agent AI - În curând
Rulează un agent AI în cadrul fluxului dvs. de lucru pentru a efectua sarcini inteligente.
**Configurare**:
* **Agent**: Selectați un agent AI existent sau folosiți agentul implicit
* **Prompt**: Scrieți instrucțiunea pentru agentul AI
* Faceți referire la variabile din pașii anteriori în prompt
**Ce pot face agenții AI**:
* Analizează și rezumă date
* Clasifică sau categorizează înregistrări
* Generează conținut text
* Ia decizii pe baza datelor
* Interacționează cu datele CRM folosind instrumente
**Output**: Răspunsul agentului AI este disponibil pentru utilizare în pașii următori. Dacă agentul are o schemă de ieșire structurată, răspunsul va urma acel format.
<Note>
Acțiunile agentului AI consumă credite ale fluxului de lucru în funcție de modelul AI utilizat. Consultați [Credite pentru fluxuri de lucru](/l/ro/user-guide/workflows/capabilities/workflow-credits) pentru detalii.
</Note>
<Note>
Agenții AI respectă permisiunile bazate pe roluri. Puteți atribui roluri specifice agenților în **Settings → Members → Roles** pentru a controla la ce date pot avea acces. Consultați [Permisiuni](/l/ro/user-guide/permissions-access/capabilities/permissions) pentru detalii.
</Note>

View File

@@ -0,0 +1,66 @@
---
title: Sucursale de lucru
description: Creați căi paralele și logică condițională în fluxurile dvs. de lucru.
---
Ramificațiile vă permit să împărțiți fluxul de lucru în mai multe căi care pot rula simultan sau condițional, în funcție de datele dvs.
<img src="/images/user-guide/workflows/branches.png" style={{width:'100%'}} />
## Cum funcționează ramificațiile
Când creați mai multe conexiuni dintr-un singur nod, fiecare cale devine o ramificație. În mod implicit, **toate ramificațiile se execută în paralel**—nu se așteaptă una pe alta.
## Crearea ramificațiilor
### Adăugați o ramificație nouă
1. **Faceți clic dreapta pe pânza principală** a fluxului de lucru (nu pe un nod existent)
2. Faceți clic pe **Adăugați nod**
3. Alegeți tipul de nod pentru ramificația nouă
4. Trageți o săgeată din partea de jos a pasului anterior la partea de sus a acestei noi acțiuni
5. Repetați pentru a adăuga mai multe ramificații din același nod
<Note>
Fiecare ramificație este independentă. Adăugarea unei ramificații nu afectează celelalte căi existente din acel nod.
</Note>
### Machetă vizuală
Ramificațiile apar ca căi paralele în editorul de fluxuri de lucru. Puteți glisa noduri pentru a rearanja macheta vizuală fără a afecta execuția.
## Ramificații condiționale
Deoarece toate ramificațiile rulează în mod implicit, utilizați noduri **Filtru** pentru a controla care căi se execută de fapt:
| Ramificație | Condiție de filtrare | Acțiune |
| ----------- | -------------------- | --------------------------------- |
| A | Etapă = "Câștigat" | Trimiteți un e-mail de felicitări |
| B | Etapă = "Pierdut" | Creați o sarcină de urmărire |
| C | Etapă = "Negociere" | Notificați managerul |
1. Creați ramificații din declanșatorul sau acțiunea dvs.
2. Adăugați un nod **Filtru** ca prim pas al fiecărei ramificații
3. Configurați fiecare filtru cu condiții care se exclud reciproc
4. Adăugați acțiunile după fiecare filtru
Doar ramificațiile în care condiția filtrului este îndeplinită vor continua să se execute.
## Îmbinarea ramificațiilor
**Ramificațiile nu se îmbină automat.** Fiecare ramificație rulează independent până când se încheie. Aveți flexibilitate completă în modul în care gestionați acest lucru:
* **Opțiunea 1: Păstrați ramificațiile separate**
Fiecare ramificație gestionează independent propriile acțiuni de urmărire. Aceasta este cea mai simplă abordare atunci când ramificațiile nu trebuie să convergă.
* **Opțiunea 2: Îmbinați ramificațiile manual**
La crearea fluxului de lucru, puteți conecta manual mai multe ramificații la aceeași acțiune ulterioară. Pur și simplu trageți săgeți de la capătul fiecărei ramificații către un nod comun.
<Note>
Deși puteți utiliza un nod [Întârziere](/l/ro/user-guide/workflows/capabilities/workflow-actions#delay) pentru a întrerupe execuția, în prezent nu poate fi configurat să aștepte "până când se termină o altă ramificație".
</Note>
## Conexe
* [Cum să utilizați ramificațiile în fluxuri de lucru](/l/ro/user-guide/workflows/capabilities/use-branches-in-workflows) - Ghid pas cu pas
* [Acțiuni ale fluxului de lucru](/l/ro/user-guide/workflows/capabilities/workflow-actions) - Acțiuni disponibile, inclusiv Filtru

View File

@@ -0,0 +1,75 @@
---
title: Credite pentru fluxuri de lucru
description: Înțelegeți consumul și gestionarea creditelor pentru fluxurile de lucru.
---
Creditele fluxului de lucru stimulează automatizările dvs. în Twenty. Înțelegerea modului în care funcționează vă ajută să optimizați costurile și să gestionați eficient bugetul de automatizare.
## Alocarea creditelor
Creditele pentru fluxurile de lucru sunt alocate în funcție de ciclul de facturare, nu de nivelul planului:
| Ciclu de facturare | Credite |
| ------------------- | ------------------- |
| **Abonament lunar** | 5 credite pe lună |
| **Abonament anual** | 50 de credite pe an |
<Note>
5 credite lunare sunt generoase pentru automatizările standard. Majoritatea echipelor nu vor depăși această limită cu utilizarea tipică a fluxurilor de lucru. Credite suplimentare sunt necesare în principal pentru acțiuni Code avansate și pentru fluxuri de lucru bazate pe AI.
</Note>
## Cum funcționează consumul de credite
Creditele sunt consumate când fluxurile de lucru se execută, nu atunci când le creați. Fiecare acțiune a fluxului de lucru consumă credite în funcție de complexitatea sa:
### Consumul de credite în funcție de tipul de acțiune
* **Operațiuni interne de bază**: Consum foarte mic de credite
* Căutați Înregistrări
* Creează înregistrare
* Actualizați Înregistrarea
* Ștergeți Înregistrarea
* Acțiuni de formular
* **Operațiuni complexe**: Consum mai ridicat de credite
* Acțiuni de cod (execuție JavaScript)
* Solicitări HTTP către servicii externe
* **Funcționalități AI**: Consum mai ridicat de credite
* Acțiunile agentului AI consumă credite în funcție de modelul AI utilizat
* Prompturile mai complexe și rezultatele mai lungi utilizează mai multe credite
* **Acțiuni Delay**: Consum minim de credite
* Nodul Delay consumă **1 credit** la execuție
* **Nu se consumă credite** în perioada de așteptare
* O întârziere de 5 minute costă la fel ca o întârziere de 5 zile
### Deducere în timp real
Creditele sunt retrase în timp real pe măsură ce fluxurile de lucru se execută. Acest lucru înseamnă:
* Fluxurile de lucru în ciornă nu consumă credite
* Numai fluxurile de lucru active, rulate utilizează alocarea dvs. de credite
* Fluxurile de lucru eșuate consumă totuși credite pentru pașii finalizați
## Gestionarea creditelor
### Verificați utilizarea creditelor
1. Accesați **Setări → Facturare**
2. Vizualizați consumul dvs. actual de credite și soldul rămas
3. Monitorizați modelele de utilizare pentru a optimiza fluxurile de lucru
### Achiziționarea de credite suplimentare
Dacă aveți nevoie de mai multe credite decât alocarea planificată:
1. Accesați **Setări → Facturare**
2. Faceți clic pe opțiunea de a achiziționa credite suplimentare. Sunt disponibile pachete de diferite dimensiuni.
3. Creditele sunt adăugate la soldul dvs. actual
## Cele mai bune practici
* **Prelucrarea în lot**: Folosește operațiuni în vrac și acțiuni ale Iteratorului în mod eficient pentru a reduce apelurile individuale de acțiune
* **Optimizare pentru declanșatorul manual**: Pentru declanșatoarele manuale, alegeți disponibilitatea `Bulk` pentru a procesa mai multe înregistrări într-o singură rulare a fluxului de lucru
* Optimizați acțiunile de cod pentru eficiență

View File

@@ -0,0 +1,93 @@
---
title: Rulările fluxului de lucru
description: Monitorizați și gestionați execuțiile fluxurilor de lucru.
---
## Despre Rulări
O **rulare** este o înregistrare a execuției unui flux de lucru. De fiecare dată când un flux de lucru este declanșat—fie de un eveniment al unei înregistrări, de o planificare, o acțiune manuală sau un webhook—se creează o nouă rulare.
## Vizualizarea Rulărilor
### Din editorul de fluxuri de lucru
1. Deschideți fluxul de lucru pe care doriți să îl monitorizați
2. Faceți clic pe panoul **Rulări** din partea dreaptă
3. Vedeți o listă cu rulările recente și starea lor
### Din vizualizarea Rulări ale fluxurilor de lucru
1. Accesați **Rulări ale fluxurilor de lucru** în bara laterală
2. Vizualizați rulările din toate fluxurile de lucru
3. Filtrați după stare, flux de lucru sau dată
## Stările rulărilor
| Status | Descriere |
| ---------------- | -------------------------------------------------------------------------------------------------- |
| **Se execută** | Fluxul de lucru se execută în prezent |
| **Completat** | Fluxul de lucru s-a finalizat cu succes |
| **Eșuat** | Fluxul de lucru a întâmpinat o eroare și s-a oprit |
| **În așteptare** | Fluxul de lucru este în pauză (de ex., așteaptă o acțiune Întârziere sau trimiterea unui formular) |
## Detalii despre rulare
Faceți clic pe orice rulare pentru a vedea:
* **Stare**: Starea curentă a rulării
* **Pornită la**: Când a început rularea
* **Durată**: Cât a durat rularea
* **Date ale declanșatorului**: Datele de intrare care au pornit fluxul de lucru
* **Ieșirile pașilor**: Datele returnate de fiecare pas
* **Mesaje de eroare**: Dacă rularea a eșuat, ce a mers prost
## Execuție pas cu pas
Fiecare rulare afișează progresul în fluxul dvs. de lucru:
1. Vedeți care pași s-au finalizat cu succes
2. Identificați unde au apărut eșecurile
3. Vizualizați datele transmise între pași
4. Depanați problemele examinând intrările și ieșirile pașilor
## Gestionarea erorilor
Când o rulare eșuează:
1. Deschideți rularea eșuată
2. Găsiți pasul care a cauzat eșecul
3. Verificați mesajul de eroare pentru detalii
Probleme comune:
* Lipsesc câmpuri obligatorii
* Format de date invalid
* Erori ale API-urilor externe
* Probleme de permisiuni
## Rularea din nou a fluxurilor de lucru
Dacă o rulare eșuează, puteți:
* Remediați problema de bază și așteptați următorul declanșator
* Pentru fluxurile de lucru manuale, declanșați din nou cu aceleași date sau cu date actualizate
* Revizuiți logica fluxului de lucru pentru a preveni eșecuri viitoare
## Sfaturi privind performanța
### Gestionarea istoricului rulărilor
* Rulările sunt păstrate pentru referință istorică
* Rulările foarte vechi pot fi arhivate automat
* Exportați datele rulărilor dacă trebuie să păstrați înregistrări
### Cele mai bune practici de monitorizare
* Verificați regulat rulările după activarea unor fluxuri de lucru noi
* Analizați rulările eșuate pentru a identifica tipare
## Conexe
* [Declanșatoare ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-triggers)
* [Acțiuni ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-actions)
* [Depanarea fluxurilor de lucru](/l/ro/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)

View File

@@ -0,0 +1,137 @@
---
title: Declanșatoare pentru fluxuri de lucru
description: Află mai multe despre diferiții declanșatori care îți încep fluxurile de lucru.
---
## Despre declanşatori
Fluxurile de lucru întotdeauna încep cu un declanșator unic care definește când ar trebui să ruleze automatizarea.
<img src="/images/user-guide/workflows/workflow_triggers.png" style={{width:'100%'}} />
<Tip>
**Obiectele avansate sunt acceptate!** Dincolo de obiectele standard CRM (People, Companii, Oportunități), puteți declanșa, de asemenea, fluxuri de lucru și efectua acțiuni pe:
* Membri ai spațiului de lucru
* Evenimente Calendar
* Mesaje (Emails)
* Sarcini, Note și multe alte obiecte de sistem
Acest lucru deschide automate puternice cum ar fi notificarea membrilor echipei atunci când evenimentele din calendar sunt create sau procesarea automată a e-mailurilor primite.
</Tip>
## Înregistrarea este creată
Pornește fluxul de lucru când este creată o nouă înregistrare într-un obiect selectat (Persoane, Companii, Oportunități sau orice obiect personalizat).
**Configurare**: Selectați tipul de obiect pentru a monitoriza noile înregistrări.
<Note>
* Acest declanșator este grozav pentru înregistrările create de CSV, cutia poștală și sincronizarea calendarului, sau API.
* **Nu este recomandat pentru înregistrările create manual**: cu acest declanșator, fluxurile de lucru încep imediat ce înregistrarea este creată. Deoarece 20 de UI oferă salvare automată în zbor (nu există nici un mod de editare și apoi o validare pentru a salva înregistrările), fluxul de lucru va fi declanșat înainte ca utilizatorul să introducă toate câmpurile.
Pentru a declanșa acest flux de lucru pe înregistrările create manual, este recomandat să utilizați declanșatorul `Record este creat sau actualizat`.
</Note>
## Înregistrarea este actualizată
Pornește fluxul de lucru când se fac modificări într-o înregistrare existentă.
**Configurare**:
* Selectați tipul de obiect
* Specificați opțional care câmpuri să fie monitorizate pentru modificări
## Înregistrarea este actualizată sau creată
Pornește fluxul de lucru când o înregistrare este fie creată, fie actualizată într-un obiect selectat.
**De ce contează acest lucru**: Acest declanșator este deosebit de util deoarece înregistrările create prin metode diferite se comportă diferit:
* **Importuri API/CSV**: Înregistrările sunt create cu toate câmpurile completate imediat
* **Creare manuală**: Înregistrările sunt create mai întâi, apoi câmpurile sunt adăugate în actualizări ulterioare
**Configurare**:
* Selectați tipul de obiect pentru a monitoriza
* Specificați opțional care câmpuri să fie monitorizate pentru modificări
* Fluxul de lucru va fi declanșat atât la crearea inițială, cât și la orice actualizări ulterioare
## Înregistrarea este ștearsă
Pornește fluxul de lucru când o înregistrare este eliminată dintr-un obiect.
**Configurare**: Selectați tipul de obiect pentru a monitoriza ștergerile.
## Declanșare manuală
Pornește fluxul de lucru când este declanșat de o acțiune a utilizatorului. Acest declanșator poate fi accesat prin meniul `Cmd+K` sau printr-un buton personalizat care va fi afișat în bara de navigare de sus după selectarea înregistrării(lor).
<img src="/images/user-guide/workflows/add_to_newsletter_button.png" style={{width:'100%'}} />
**Configurare disponibilitate**:
Alegeți cum ar trebui ca fluxul de lucru să gestioneze selecția înregistrărilor:
* **Global**: Nu se necesită nicio înregistrare pentru a declanșa acest flux de lucru. Fluxul de lucru este declanșat din meniul de comandă `Cmd+K` oriunde (de la orice obiect) și nu folosește înregistrarea (înregistrările) ca intrare.
Pentru disponibilitatea **Single** și **Bulk**, înregistrările selectate vor fi transmise la fluxul de lucru. Aceasta este configurată pentru un obiect dat, și mai multe înregistrări pot fi selectate înainte de a declanșa fluxul de lucru.
* **Single**: Fluxul de lucru va rula de la început la sfârșit de câte ori există înregistrări selectate.
<Note>
**Limita soft: 100 runs/minut**. Dincolo de aceasta, fluxurile de lucru rămân în starea „Nu s-a început” și sunt procesate treptat — fie de un job de fundal sau atunci când un alt flux de lucru intră în coadă. Asta înseamnă că poți selecta mai mult de 100 de înregistrări cu un singur declanșator; execuția va fi mai lentă.
</Note>
* **Bulk**: Fluxul de lucru va rula o dată, furnizând întreaga listă de înregistrări ca intrare. Aceasta înseamnă că fluxul de lucru trebuie să conțină o [acțiune Iterator](/l/ro/user-guide/workflows/capabilities/workflow-actions#iterator).
<Note>
Acest lucru este mai avansat, și cel mai bine pentru cei care doresc să optimizeze numărul de alergări de fluxuri de lucru.
</Note>
<img src="/images/user-guide/workflows/manual_trigger.png" style={{width:'100%'}} />
**Configurare suplimentară**:
* Selectați obiectul țintă (pentru modurile Single și Bulk)
* Alegeți o pictogramă de comandă pentru declanșarea fluxului de lucru
* Configurați plasarea în navbar (fixat sau nefixat)
**Metode de acces**:
* Meniul `Cmd+K` pentru a găsi și lansa fluxuri de lucru manuale
* Buton personalizat în navbarul superior (dacă este configurat)
## Declanșator temporal: Pe un program
Pornește fluxul de lucru în mod recurent, conform configurării pe care o definiți.
**Configurare**:
* Selectați unitatea de timp (minute, ore, zile)
* Introduceți o valoare sau folosiți expresii cron personalizate pentru programare avansată
<Note>
**Fus orar**: Fluxuri de lucru programate rulează în **UTC**. Când sunt stabilite ore pentru orarele zilnice, convertiți ora locală în UTC.
</Note>
## Declanșator extern: Webhook
Pornește fluxul de lucru când este primită o cerere GET sau POST de la un serviciu extern.
<img src="/images/user-guide/workflows/webhook_trigger.png" style={{width:'100%'}} />
**Configurare**:
* Fluxul de lucru oferă un URL webhook unic - copiați-l și adăugați-l în sistemul dvs. extern ca punct final pentru apelare.
* În ceea ce privește cererile POST, să se definească structura organică preconizată, astfel încât douăzeci să știe ce date să aștepte. Adăugați aici câmpurile pe care le veți primi care vor fi necesare mai jos în fluxul de lucru.
* Configurați autentificarea (în curând).
## Alegerea Declanșatorului din dreapta
| Utilizare Caz | Declanșator recomandat |
| ---------------------------------------- | ----------------------------------------- |
| Noi piste necesită procesare | Înregistrarea este creată |
| Schimbarea datelor necesită sincronizare | Înregistrarea este actualizată |
| Import/manipularea manuală a datelor | Înregistrarea este actualizată sau creată |
| Curățare după ștergere | Înregistrarea este ștearsă |
| Acțiune inițiată de utilizator | Lansare manuală |
| Rapoarte periodice | Conform unui program |
| Integrarea externă | Webhook sau pe o programare |

View File

@@ -0,0 +1,84 @@
---
title: Versiunile fluxului de lucru
description: Gestionați versiunile și schițele fluxului de lucru.
---
## Despre versiuni
De fiecare dată când activați un flux de lucru, se creează o versiune nouă. Acest lucru vă permite să urmăriți modificările în timp și să reveniți la configurațiile anterioare, dacă este necesar.
## Stările versiunilor
| Status | Descriere |
| -------------- | -------------------------------------------- |
| **Schiță** | În curs de editare, încă nepublicată |
| **Activ** | Versiunea live care răspunde la declanșatori |
| **Dezactivat** | Anterior activă, oprită manual |
| **Arhivat** | Versiuni anterioare păstrate pentru istoric |
## Lucrul cu schițele
Când editați un flux de lucru activ, modificările sunt salvate ca **schiță**. Versiunea activă continuă să ruleze în timp ce lucrați la actualizări.
După ce ați terminat editarea, puteți:
* **Activați**: Publicați schița ca noua versiune activă (versiunea anterioară este arhivată)
* **Renunțați**: Ștergeți schița și păstrați versiunea activă curentă
## Istoria versiunilor
### Vizualizarea versiunilor anterioare
1. Deschideți fluxul de lucru
2. Faceți clic pe fila **Versiuni**
3. Vedeți toate versiunile anterioare cu marcaje de timp
### Restaurarea unei versiuni
1. Găsiți versiunea pe care doriți să o restaurați
2. Faceți clic pe **Utilizează ca schiță**
3. Versiunea este copiată într-o nouă schiță
4. Efectuați actualizările necesare
5. Activați când sunteți gata
## Cele mai bune practici
### Gestionarea versiunilor
* Activați numai când este gata pentru producție
* Păstrați modificările semnificative între versiuni
* Documentați modificările majore în numele sau descrierile fluxurilor de lucru
* Testați în modul schiță înainte de a activa
### Anularea modificărilor
* Dacă o versiune nouă provoacă probleme, restaurați versiunea anterioară
* Utilizați istoricul versiunilor pentru a urmări ce s-a schimbat
* Testați întotdeauna versiunile restaurate înainte de activare
## Fluxuri de lucru comune
### Editare rapidă
1. Faceți modificări minore la un flux de lucru activ
2. Testați în modul schiță
3. Activați noua versiune
### Revizie majoră
1. Folosiți versiunea anterioară ca punct de pornire
2. Efectuați modificări semnificative în schiță
3. Testați temeinic toate scenariile
4. Activați când sunteți încrezători
### Revenire
1. Identificați problema versiunii curente
2. Găsiți în istoric ultima versiune funcțională
3. Faceți clic pe **Utilizează ca schiță**
4. Activați pentru a restabili comportamentul vechi
## Conexe
* [Noțiuni de bază despre fluxuri de lucru](/l/ro/user-guide/workflows/overview)
* [Execuții ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-runs)