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,76 @@
---
title: Gestionarea erorilor și validarea
description: Revizuiți și corectați erorile de import direct în UI înainte de confirmare.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Validare înainte de import
După ce încărcați fișierul și mapați câmpurile, Twenty vă validează datele **înainte** de import. Acest lucru vă permite să depistați și să corectați erorile fără a afecta datele existente.
## Cum Funcționează
1. **Încărcați** fișierul CSV
2. **Mapați** coloanele la câmpurile Twenty
3. **Revizuiți** erorile potențiale evidențiate cu galben
4. **Corectați erorile** direct în UI
5. **Confirmați** importul
<VimeoEmbed videoId="1145273857" title="Demonstrație video" />
## Afișarea erorilor
Rândurile cu probleme sunt evidențiate cu **galben**. Puteți:
* **Editați celula direct** pentru a corecta eroarea
* **Eliminați rândul** pentru a-l omite complet
Această editare în linie economisește timp — nu mai este nevoie să reveniți la foaia de calcul, să corectați erorile și să reîncărcați.
## Tipuri comune de erori
### Valori duplicate
**Cauză**: Un câmp unic (email, domeniu) există deja în Twenty sau apare de două ori în fișier.
**Remediere**:
* Editați valoarea duplicată în UI-ul de import
* Eliminați unul dintre rândurile duplicate
Consultați [Constrângeri de unicitate](/l/ro/user-guide/data-migration/capabilities/uniqueness-constraints) pentru mai multe detalii despre cum este aplicată unicitatea.
### Format invalid
**Cauză**: Datele nu corespund formatului așteptat (de ex., adresă de e-mail invalidă, format de dată greșit).
**Remediere**: Editați celula pentru a folosi formatul corect.
Consultați [Maparea câmpurilor](/l/ro/user-guide/data-migration/capabilities/field-mapping) pentru formatul așteptat al fiecărui tip de câmp.
### Lipsesc câmpuri obligatorii
**Cauză**: Un câmp obligatoriu este gol.
**Remediere**: Introduceți o valoare în câmpul obligatoriu sau eliminați rândul.
### Relația nu a fost găsită
**Cauză**: Înregistrarea de referință nu există (de ex., un domeniu de Companie care nu a fost importat).
**Remediere**:
* Importați mai întâi înregistrările părinte
* Sau corectați valoarea de referință
Consultați [Importul relațiilor](/l/ro/user-guide/data-migration/capabilities/import-relations) pentru ordinea corectă de import și cum să legați înregistrările.
## Sfaturi pentru mai puține erori
1. **Descărcați șablonul** pentru a vedea formatul așteptat înainte de a importa fișierul dvs.
2. **Curățați datele** mai întâi în foaia de calcul
3. **Importați fișierele în ordinea corectă** pentru a importa relațiile (Companii → Persoane → Oportunități)
4. **Testați cu loturi mici** înainte de importul complet
5. **Verificați duplicatele** înainte de încărcare
6. **Limitați fiecare fișier la 10.000 de înregistrări**

View File

@@ -0,0 +1,198 @@
---
title: Maparea câmpurilor
description: Cum funcționează maparea câmpurilor în timpul importului de date.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Cum funcționează maparea câmpurilor
Când încărcați un fișier, Twenty analizează coloanele și încearcă să le potrivească cu câmpurile existente.
### Mapare automată
Twenty încearcă să potrivească coloanele pe baza:
* Numele antetelor de coloană (potriviri exacte sau similare)
* Detecția tipului de date (date, numere, e-mailuri)
* Tipare comune de câmp
<Note>**Sfat rapid:** Exportați câteva rânduri din obiectul pe care doriți să-l importați. Fișierul exportat va avea exact numele de coloane pe care Twenty le așteaptă, ceea ce face ca maparea automată să fie fără probleme în timpul importului.</Note>
### Opțiuni de mapare manuală
Pentru fiecare coloană, puteți:
* **Mapați la un câmp**: Selectați câmpul Twenty corespunzător dintr-un meniu derulant
* **Nu mapați**: Omiteți complet coloana (datele nu vor fi importate)
<Note>**Câmpurile trebuie să existe înainte de import.** Importul creează înregistrări, nu câmpuri. Creați câmpuri personalizate în **Setări → Model de date** înainte de import.</Note>
## Compatibilitatea tipurilor de câmp
Toate tipurile de câmp disponibile în Modelul de date sunt acceptate pentru import.
Puteți importa și valori `id` pentru a atribui un ID specific înregistrărilor noi sau pentru a le actualiza pe cele existente.
<img src="/images/user-guide/fields/all-field-types.png" style={{width:'100%'}} />
## Cerințe privind formatul datelor
<Note>**Unele câmpuri au o sintaxă specială.** Vă recomandăm să descărcați fișierul exemplu înainte de pregătirea importului, pentru a vedea sintaxa așteptată pentru fiecare tip de câmp.</Note>
### Câmpuri de adresă
Adresa este un câmp îmbricat cu mai multe coloane. Unele pot fi lăsate necompletate.
* **Adresă / Adresă 1**: Linia 1 a adresei stradale
* **Adresă / Adresă 2**: Linia 2 a adresei stradale
* **Adresă / Oraș**: Numele orașului
* **Adresă / Stat**: Stat sau provincie
* **Adresă / Țară**: Numele țării
* **Adresă / Cod poștal**: Cod poștal/ZIP
### Câmpuri de tip array
Folosiți următorul format:
```
["value1","value2"]
```
### Câmpuri booleene
Folosiți `TRUE` sau `FALSE` (cu majuscule) - nu `true` sau `false`
### Câmpuri de monedă
Moneda este un câmp îmbricat cu două coloane care trebuie ambele completate:
* **Sumă / Sumă**: Valoarea numerică (de ex., `1234.56`)
* **Sumă / Monedă**: Codul monedei (de ex., `USD`, `EUR`)
### Câmpuri de dată
Formate acceptate:
* `YYYY-MM-DD` (recomandat)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
* Format ISO 8601
### Câmpuri de domeniu
* Este recomandat să folosiți formatul `https://domain.com` pentru a evita crearea de duplicate, deoarece acesta este formatul folosit pentru Companiile create de sincronizările cu căsuța poștală și calendarul
* Se pot completa un `Domain Label` și un `Domain URL`: cea mai bună practică este să completați `domain.com` în etichetă și `https://domain.com` în URL
* Domeniile trebuie să fie unice în obiectul Companii
* **Domeniile trebuie să fie unice în fișierul de importat**
### Câmpuri de e-mail
* Trebuie să fie în format de e-mail valid
* E-mailurile trebuie să fie unice în obiectul Persoane
* **E-mailurile trebuie să fie unice în fișierul de importat**
* Pentru e-mailuri suplimentare: folosiți **E-mailuri / E-mail principal** pentru e-mailul principal și **E-mailuri / E-mailuri suplimentare** cu acest format:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### Câmpuri ID
Specificarea unui `id` în timpul importului este opțională. Twenty generează automat unul dacă nu este furnizat.
Cazuri de utilizare pentru maparea unei coloane `id`:
* **Setați un ID specific**: Alegeți UUID-ul pentru înregistrările nou create
* **Actualizați înregistrările existente**: Potriviți cu înregistrările existente pentru a le actualiza în loc să creați duplicate. În acest caz, se recomandă să nu mapați celelalte câmpuri unice: maparea unui singur câmp unic asigură un import mai lin.
<Note>Dacă furnizați un `id`, acesta trebuie să fie în format UUID (de ex., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
### Câmpuri JSON
Folosiți un format JSON valid:
```
{"key":"value","key2":"value2"}
```
### Câmpuri pentru linkuri
Similar cu câmpurile de domeniu:
* Completați ambele coloane, eticheta și URL-ul: **Linkuri / URL link** și **Linkuri / Etichetă link**
* Folosiți formatul URL complet: `https://example.com`
* Pentru linkurile secundare, folosiți coloana **Linkuri / Linkuri secundare** cu acest format:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
### Câmpuri cu selecție multiplă
Folosiți **numele API** (nu etichetele de afișare) în următorul format:
```
["VALUE1","VALUE2"]
```
Consultați [aici](#finding-api-names-for-select-fields) unde puteți găsi numele API.
<Note>Opțiunile noi de selectare nu vor fi create automat de import. Acestea trebuie adăugate în **Setări → Model de date** înainte de import.</Note>
<Warning>
**Importă suprascrieri; nu adaugă.**
Dacă o înregistrare are deja selectate `VALUE2` și `VALUE3`, iar importați `["VALUE1"]`, înregistrarea va avea doar `VALUE1` după import. Selecțiile anterioare sunt înlocuite, nu îmbinate.
</Warning>
### Câmpuri numerice
* Doar numere
* Zecimalele folosesc punctul: `1234.56`
* Fără separatori pentru mii
### Câmpuri de telefon
Telefonul este un câmp îmbricat cu mai multe coloane care **trebuie completate**
* **Telefoane / Număr de telefon principal**: Numărul de telefon (de ex., `4159095555`)
* **Telefoane / Codul de țară al telefonului principal**: Codul de țară (de ex., `US`)
* **Telefoane / Prefixul de apelare al telefonului principal**: Prefixul de apelare (de ex., `+1`)
### Câmpuri de rating
Folosiți formatul numelui API: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
### Câmpuri de relație
Consultați articolul nostru dedicat: [Importul relațiilor dintre obiecte](/l/ro/user-guide/data-migration/capabilities/import-relations)
### Câmpuri de selectare
Folosiți **numele API** al opțiunii (nu eticheta de afișare):
```
VALUE1
```
Consultați [aici](#finding-api-names-for-select-fields) unde puteți găsi numele API.
<Note>Opțiunile noi de selectare nu vor fi create automat în urma importului. Acestea trebuie adăugate în **Setări → Model de date** înainte de import.</Note>
### Câmpuri text
* Nu este necesară nicio formatare specială
* Spațiile de la început și de la sfârșit sunt eliminate
## Găsirea numelor API
Pentru câmpurile Select, Multi-Select și Array cu opțiuni predefinite, trebuie să utilizați **numele API**, nu etichetele de afișare.
### Cum găsiți numele API
1. Accesați **Setări → Model de date**
2. Selectați obiectul și câmpul
3. Activați **Modul avansat** (comutator în dreapta jos a paginii de setări)
4. Vizualizați numele API pentru fiecare opțiune
<VimeoEmbed videoId="1144910809" title="Demonstrație video" />

View File

@@ -0,0 +1,48 @@
---
title: Formate de fișiere acceptate!
description: Formate de fișier acceptate pentru importul de date în Twenty.
---
## Formate acceptate
Twenty acceptă trei formate de fișier pentru import:
| Format | Extensie | Notițe |
| ----------------- | -------- | ------------------------------ |
| **CSV** | .csv | Recomandat, cel mai compatibil |
| **Excel** | .xlsx | Format Excel modern |
| **Excel (vechi)** | .xls | Format Excel mai vechi |
## Cerințe pentru fișiere
| Cerință | Valoare |
| -------------------------- | -------------------------------------------------- |
| **Codare** | Se recomandă UTF-8 |
| **Limită de înregistrări** | 10.000 de înregistrări pe fișier |
| **Structură** | Primul rând trebuie să conțină antetele coloanelor |
| **Conținut** | Un singur tip de obiect pe fișier |
## Cele mai bune practici pentru CSV
* **Delimitator**: utilizați virgula (`,`) sau punct și virgulă (`;`)
* **Calificator de text**: utilizați ghilimele duble (`"`) pentru text care conține virgule
* **Sfârșituri de linie**: Windows (CRLF) sau Unix (LF), ambele sunt acceptate
* **Valori goale**: Lăsați celulele necompletate, nu folosiți "NULL" sau "N/A"
## Cele mai bune practici pentru Excel
Când exportați din Excel:
* Eliminați formulele (exportați doar valorile)
* Ștergeți rândurile goale de la final
* Asigurați-vă că nu există celule îmbinate
* Folosiți doar prima foaie
## Seturi de date mari
Pentru seturi de date mai mari de 10.000 de înregistrări:
* Împărțiți în mai multe fișiere
* Sau folosiți [importul prin API](/l/ro/user-guide/data-migration/how-tos/import-data-via-api) pentru un număr nelimitat de înregistrări
<Note>Pentru migrarea unor volume foarte mari (peste 100.000 de înregistrări), API-ul este semnificativ mai rapid și mai fiabil decât importurile CSV.</Note>

View File

@@ -0,0 +1,148 @@
---
title: Importați relațiile dintre obiecte
description: Importați relațiile dintre înregistrări prin CSV.
---
## Prezentare generală
Twenty acceptă importul relațiilor dintre obiecte în timpul importului CSV. Acest lucru vă permite să conectați înregistrări (de ex., să atașați Persoane la Companii) ca parte a migrării datelor.
<Note>**În prezent acceptat pentru import**: Relații de tip unu-la-mulți care indică spre un singur tip de obiect pe fiecare parte (de ex., Persoane → Companii). Relațiile care indică către mai multe tipuri de obiecte nu sunt încă acceptate pentru import/export.</Note>
## Cum funcționează relațiile în Twenty
### Unu la mulți / Mulți la unu
Twenty acceptă relații standard în care o înregistrare se leagă de multe altele:
* **O Companie → Multe Persoane**: O companie poate avea mai mulți angajați, dar fiecare persoană aparține unei singure companii
* **O Companie → Multe Oportunități**: O companie poate avea mai multe oportunități, dar fiecare oportunitate aparține unei singure companii
### Relații care pot indica către mai multe tipuri de obiecte
Unele relații se pot conecta la diferite tipuri de obiecte. Acest lucru funcționează în două moduri:
**Modelul 1: Multe înregistrări care se leagă fiecare de o singură înregistrare din tipuri de obiecte diferite**
Mai multe note sau sarcini pot fi atașate fiecăruia la mai multe tipuri de obiecte simultan:
* **Notele** pot fi legate simultan de o Persoană, o Companie și o Oportunitate
* **Sarcinile** pot fi legate simultan de o Persoană, o Companie și o Oportunitate
Aici, Notele/Sarcinile se află pe partea „mulți”. Fiecare se leagă de o singură înregistrare pentru fiecare tip de obiect.
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
**Modelul 2: O înregistrare care primește legături de la multe înregistrări din tipuri de obiecte diferite**
Un Proiect poate primi legături de la multiple înregistrări din diferite tipuri de obiecte:
* **Un Proiect** poate avea multe Persoane legate de el, multe Companii legate de el și multe Note atașate la el
Aici, Proiectul se află pe partea „unu”. Mai multe înregistrări din obiecte diferite se pot conecta toate la același Proiect.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**Limitare de import/export**: Relațiile care indică către mai multe tipuri de obiecte (cum ar fi Note → Persoane/Companii/Oportunități) nu sunt **încă acceptate** la importul sau exportul CSV.
* **Import**: Numai relațiile unu-la-mulți care indică spre un singur tip de obiect pe fiecare parte pot fi importate
* **Export**: Coloanele pentru relațiile care indică către mai multe tipuri de obiecte sunt în prezent lăsate necompletate
Această funcționalitate este în planul nostru de dezvoltare.
</Warning>
### Ce nu este acceptat astăzi
**Relațiile mulți-la-mulți** nu sunt încă disponibile. De exemplu, în prezent nu puteți crea o relație în care:
* Multe Persoane sunt legate de multe Proiecte
<Note>Multe relatii sunt planificate pentru H2 2026.</Note>
## Asocierea înregistrărilor în timpul importului
<Note>**Reamintire**: Doar relațiile unu-la-mulți care indică spre un singur tip de obiect pot fi importate (de ex., Persoane → Companii). Relațiile care indică către mai multe tipuri de obiecte (de ex., Note → Persoane/Companii/Oportunități) nu sunt încă acceptate.</Note>
### Pasul 1: Identificați părțile „unu” și „mulți”
Mai întâi, determinați care obiect se află pe partea „unu” și care pe partea „mulți” a relației.
**Exemplu**:
* **Compania** este partea „unu” (o companie are mulți angajați)
* **Persoane** este partea „mulți” (fiecare persoană aparține unei singure companii)
### Pasul 2: Asigurați existența înregistrărilor de pe partea „unu”
Înainte de a importa partea „mulți”, înregistrările de pe partea „unu” trebuie să existe deja în Twenty.
* Importați sau creați mai întâi înregistrările de pe partea „unu” (de ex., Companii)
* Validați identificatorul lor unic. Acesta poate fi:
* `id` (UUID-ul Twenty)
* Un câmp setat ca unic (de ex., `domain` pentru Companii sau un ID extern din sistemul dvs. anterior)
<Warning>Importul va eșua dacă se face referire la o înregistrare care nu există.</Warning>
### Pasul 3: Pregătiți fișierul CSV
Adăugați o coloană în fișierul CSV pentru partea „mulți” care face referire la înregistrarea de pe partea „unu”.
**Exemplu**: Pentru un fișier CSV cu Persoane care se leagă de Companii:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**Important**:
* Valoarea trebuie să se potrivească **exact** cu câmpul unic din înregistrarea Companiei
* Pentru domenii, folosiți **URL-ul domeniului** (de ex., `https://acme.com`), nu eticheta domeniului
* Mapați doar **un** identificator unic per relație: acest lucru duce la un import mai lin
### Pasul 4: Verificați existența câmpului de relație
Înainte de a încărca fișierul, asigurați-vă că există câmpul de relație între obiectele dvs.
Dacă nu există:
1. Accesați **Setări → Model de date**
2. Selectați obiectul (de ex., Persoane)
3. Creați un câmp de relație care indică spre obiectul țintă (de ex., Companie)
### Pasul 5: Încărcați și mapați relația
1. Încărcați fișierul CSV prin interfața de import
2. În pasul de mapare a câmpurilor, găsiți coloana relației (de ex., `companyDomain`)
3. Mapați-o la câmpul de relație (de ex., Companie)
4. Twenty va lega automat fiecare înregistrare de părintele corespunzător
### Câmpuri unice disponibile pentru relații
| Obiect | Câmpuri unice disponibile |
| ------------------------------------------ | -------------------------------------------- |
| **Companii** | `id`, `domain`, orice câmp unic personalizat |
| **Persoane** | `id`, `email`, orice câmp unic personalizat |
| **Membri ai spațiului de lucru** | `id`, `email` (nu numele) |
| **Alte obiecte standard și personalizate** | `id`, orice câmp marcat ca unic |
<Note>**Conectarea la Membrii Workspace-ului**: Când relația indică către Membrii Workspace-ului (echipa dvs. care se autentifică în Twenty), referiți-vă la ei prin **adresa de email**, nu prin nume.</Note>
<Note>Recomandăm folosirea `domain` pentru Companii și `email` pentru Persoane, deoarece acestea sunt ușor de citit și ușor de întreținut în foi de calcul.</Note>
<Note>**Reamintire**: Înregistrările șterse soft (vizibile în Command Menu → See deleted records) se iau în calcul pentru criteriile de unicitate. Dacă importați o înregistrare cu aceeași valoare unică ca o înregistrare ștearsă, înregistrarea ștearsă va fi restaurată. Consultați [Constrângeri de unicitate](/l/ro/user-guide/data-migration/capabilities/uniqueness-constraints) pentru mai multe detalii.</Note>
## Regula ordinii de import
<Warning>
**Importați întotdeauna mai întâi partea „unu”!**
1. **Companii** mai întâi (fără dependențe)
2. **Persoane** în al doilea rând (legate de Companii)
3. **Oportunități** în al treilea rând (legate de Companii/Persoane)
4. **Obiecte personalizate** respectând dependențele lor
Înregistrarea părinte trebuie să existe înainte de a o putea referi.
</Warning>

View File

@@ -0,0 +1,72 @@
---
title: Constrângeri de unicitate
description: Cum impune Twenty unicitatea datelor în timpul importului.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Prezentare generală
Twenty impune unicitatea pentru anumite câmpuri pentru a preveni înregistrările duplicate și a asigura integritatea datelor. Înțelegerea acestor constrângeri este esențială pentru importuri reușite.
## Câmpuri unice implicite
| Obiect | Câmpuri unice |
| ------------------------- | -------------------- |
| **Persoane** | `id`, `email` |
| **Companii** | `id`, `domain` |
| **Obiecte personalizate** | doar `id` (implicit) |
<Note>Câmpul `id` este identificatorul intern al Twenty, generat automat pentru fiecare înregistrare. Acesta folosește formatul UUID (de ex., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
## Câmpuri unice personalizate
Puteți defini câmpuri unice suplimentare în **Setări → Model de date**:
1. Accesați **Setări → Model de date**
2. Selectați obiectul
3. Faceți clic pe un câmp
4. Activați **Unique** în setările câmpului
### Cazuri de utilizare pentru câmpuri unice personalizate
* **ID-uri externe**: Stocați ID-uri din alte sisteme (Salesforce ID, HubSpot ID)
* **Identificatori de afaceri**: Numere de angajat, coduri de client
* **Informații de contact alternative**: Profil LinkedIn, număr de telefon
<Note>Numele câmpului `id` este rezervat pentru ID-ul intern al Twenty. Folosiți un nume diferit, precum `externalId` sau `legacyId`, pentru identificatori externi.</Note>
## Comportamentul importului
### Crearea de înregistrări noi
Dacă valoarea unui câmp unic nu există, se creează o înregistrare nouă.
### Actualizarea înregistrărilor existente
Dacă valoarea unui câmp unic se potrivește cu o înregistrare existentă, acea înregistrare este **actualizată** cu noile date.
<Warning>Pentru a **actualiza înregistrările existente**, se recomandă să **potriviți un singur câmp unic**.</Warning>
### Înregistrări șterse logic
<Warning>
**Înregistrările șterse logic se iau în calcul pentru unicitate.**
Înregistrările șterse logic (vizibile în Command Menu → See deleted records) sunt incluse în verificările de unicitate. Dacă importați o înregistrare cu aceeași valoare unică ca o înregistrare ștearsă, înregistrarea ștearsă va fi **restaurată** cu noile date.
</Warning>
## Detectarea duplicatelor în timpul importului
În timpul etapei de validare:
* Duplicatele din fișier sunt evidențiate cu galben
* Puteți edita sau elimina rândurile duplicate din interfață înainte de a începe importul
<VimeoEmbed videoId="1145246326" title="Demonstrație video" />
## Cele mai bune practici
1. **Eliminați duplicatele** din fișier înainte de import
2. **Verificați dacă există înregistrări** în Twenty înainte de import
3. **Folosiți ID-uri externe** când migrați din alte sisteme
4. **Includeți câmpuri unice** dacă doriți să actualizați înregistrările existente

View File

@@ -0,0 +1,32 @@
---
title: Export întrebări frecvente
description: Întrebări frecvente despre exportul datelor.
---
<AccordionGroup>
<Accordion title="Putem exporta toate datele din spațiul de lucru înainte de anulare, inclusiv obiecte personalizate, câmpuri personalizate, relații, note, sarcini, oportunități, atașamente, fluxuri de lucru, permisiuni și istoricul auditului?">
Datele privind spațiul de lucru pot fi exportate înainte de anulare, cu unele excepții: tablourile de bord, fluxurile de lucru și permisiunile trebuie transferate manual; jurnalele de audit nu pot fi transferate.
</Accordion>
<Accordion title="Ce elemente nu pot fi exportate sau migrate în prezent?">
Majoritatea elementelor pot fi exportate sau migrate cu unele excepții:
* fluxuri de lucru, tablouri de bord și toate setările (chei API, webhooks, jurnale de audit, setări de utilizator etc.) trebuie să fie migrat manual
* Obiectele și câmpurile create de aplicații pot fi migrate prin instalarea aplicației respective într-un spațiu de lucru diferit. Nu ar trebui să fie migrate manual
* unele înregistrări, cum ar fi versiunile fluxului de lucru și rulările fluxului de lucru, nu sunt deloc transferabile și se preconizează că vor fi pierdute
* unele obiecte precum mesaje și obiecte legate de calendar nu ar trebui exportate deoarece sunt create atunci când un cont este conectat și sincronizat periodic. Vor fi sincronizate din nou odată ce vă conectați contul (atâta timp cât aveți acces la contul menționat, dacă este un cont al unui membru al echipei care a părăsit compania ta, atunci acele mesaje trebuie să fie exportate, altfel vor fi pierdute)
</Accordion>
<Accordion title="Există un cloud oficial pentru o procedură de migrație auto-găzduită sau un serviciu de migrație asistată?">
Până în prezent, nu există o procedură oficială de migrare „cloud-to-held”. Ideea generală este următoarea:
* în primul rând, instalați aplicații pentru a introduce obiecte și câmpuri deținute de aplicație
* reproduce obiecte și câmpuri personalizate adăugate de utilizatori
* utilizați un script cu chei API sau instrumente AI pentru a migra toate datele dintr-un spațiu de lucru în altul
* toate obiectele netransferabile trebuie să fie migrate manual
Vă rugăm să fiţi conştienţi de câteva lucruri:
* poți trimite până la 50 de cereri pe minut în planul Pro sau 100 de cereri pe minut în planul organizației înainte de a atinge o limită solicitare/min
* fiecare cerere API poate avea până la 200 de înregistrări
* unele date din câmpuri cum ar fi Create, Activități Cronologie și Actualizate de vor fi pierdute în timpul importului și suprascrise de sistem
</Accordion>
<Accordion title="Fișierele exportate sunt furnizate în formate deschise și documentate?">
Fișierele exportate în UI sunt în format Excel și toate cererile API pot fi salvate în format JSON.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,209 @@
---
title: Exportați-vă datele
description: Ghid complet, pas cu pas, pentru exportul datelor din Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Prezentare generală
Exportați datele spațiului de lucru în CSV pentru copii de siguranță, raportare sau migrare.
**Cazuri de utilizare:**
* **Copii de siguranță regulate** — păstrați copii ale datelor dvs.
* **Raportare externă** — analizați datele în Excel, Google Sheets sau instrumente BI
* **Migrare** — mutați datele într-un alt sistem
* **Actualizări în masă** — exportați, editați și reimportați pentru a actualiza înregistrările
## Ce trebuie să știți
### Limite de export
* **Maxim 20.000 de înregistrări** pentru fiecare export
* Sunt exportate doar **coloanele vizibile**
* Sunt exportate doar **înregistrările filtrate** (pe baza vizualizării curente)
<Note>Pentru exporturi mai mari (20.000+ înregistrări), utilizați filtre pentru a exporta în loturi sau folosiți [API](/l/ro/developers/extend/api).</Note>
### Permisiuni
Aveți nevoie de permisiunea **"Export CSV"** pentru a exporta date. Contactați administratorul spațiului de lucru dacă nu aveți această opțiune.
## Pasul 1: Navigați la obiect
Accesați obiectul pe care doriți să-l exportați:
* **Persoane** — pentru contacte
* **Companii** — pentru organizații
* **Oportunități** — pentru tranzacții
* **Obiecte personalizate** — orice obiect pe care l-ați creat
## Pasul 2: Configurați vizualizarea
**Important:** Exportul include doar ceea ce este vizibil în vizualizarea curentă.
### Adăugați/Eliminați coloane
1. Faceți clic pe **Opțiuni → Câmpuri** (sau pe **+** la capătul coloanelor)
2. Bifați câmpurile pe care doriți să le exportați
3. Debifați câmpurile de care nu aveți nevoie
### Filtrați înregistrările (opțional)
Dacă aveți nevoie doar de un subset de date:
1. Faceți clic pe **Filtru**
2. Adăugați condiții de filtrare (de ex., "Created date > 1 ianuarie 2024")
3. Vor fi exportate doar înregistrările care se potrivesc
### Sortați înregistrările (opțional)
1. Faceți clic pe antetul unei coloane pentru a sorta
2. Exportul va respecta ordinea de sortare
<Note>**Creați o vizualizare dedicată pentru export.** Salvați o vizualizare configurată specific pentru exporturi, astfel încât să nu fie nevoie să reconfigurați de fiecare dată.</Note>
## Pasul 3: Exportați datele
1. Faceți clic pe pictograma **⋮** din dreapta sus a tabelului
2. Selectați **Exportați vizualizarea**
3. Alegeți unde să salvați fișierul CSV
4. Așteptați finalizarea descărcării
## Ce se exportă
| Incluse | Neincluse |
| ------------------------------------------------ | ----------------------------------- |
| Toate coloanele vizibile | Coloane ascunse |
| Înregistrări care se potrivesc filtrelor curente | Înregistrări excluse de filtre |
| Valori ale câmpurilor personalizate | Câmpuri care nu sunt în vizualizare |
| ID-uri ale înregistrărilor | Atașamente de fișiere |
| ID-uri de relație | Imagini |
### Câmpuri de relație
ID-urile relațiilor sunt exportate doar pe **partea "many"** a unei relații:
* **Exportul de Persoane** include o coloană `companyId` (relația Persoane → Companie)
* **Exportul de Companii** NU include `peopleIds` (Companii este partea "one")
Asta înseamnă că puteți folosi exportul de Persoane pentru a reimporta și menține legătura cu Compania, dar va trebui să reimportați Persoanele după Companii pentru a recrea relațiile.
## Export pentru scopuri specifice
### Pentru copii de siguranță
1. Creați o vizualizare cu **toate câmpurile** vizibile
2. Eliminați toate filtrele pentru a include toate înregistrările
3. Exportați fiecare tip de obiect separat
4. Stocați exporturile într-o locație sigură
5. Setați un memento recurent (săptămânal/lunar)
### Pentru raportare externă
1. Includeți doar câmpurile necesare pentru analiză
2. Aplicați filtre pentru a vă concentra pe datele relevante
3. Luați în considerare sortarea după câmpul pe care îl veți analiza
### Pentru actualizări în masă
1. Exportați înregistrările pe care doriți să le actualizați
2. Includeți identificatorul unic (`email`, `domain` sau `id`)
3. Editați fișierul exportat
4. Reimportați pentru a actualiza înregistrările
Consultați: [Cum să actualizați înregistrările existente](/l/ro/user-guide/data-migration/how-tos/update-existing-records-via-import)
### Pentru migrare
Dacă exportați pentru a migra către un alt sistem:
1. **Exportați fiecare obiect separat** — Persoane, Companii, Oportunități etc.
2. **Includeți câmpurile de ID** — acestea ajută la menținerea relațiilor
3. **Documentați mapările câmpurilor** — notați cum câmpurile Twenty corespund sistemului țintă
## Gestionarea seturilor de date mari (20.000+ înregistrări)
Limita de export este de 20.000 de înregistrări. Pentru seturi de date mai mari:
### Opțiunea 1: Export în loturi
1. Adăugați un filtru (de ex., intervale "Created date")
2. Exportați primul lot
3. Modificați filtrul
4. Exportați următorul lot
5. Combinați fișierele în foaia de calcul
**Exemple de filtre pentru lotizare:**
* După interval de date (ianuarie, februarie, martie...)
* După proprietar (Membru al echipei A, Membru al echipei B...)
* După statut (Activ, Inactiv...)
### Opțiunea 2: Utilizați API-ul
API-ul nu are limită de înregistrări:
1. Obțineți cheia API din **Setări → Dezvoltatori**
2. Utilizați API-ul GraphQL pentru a interoga înregistrări
3. Procesați rezultatele în aplicația dvs.
Consultați: [Documentație API](/l/ro/developers/extend/api)
## Sfaturi și bune practici
### Creați vizualizări pentru export
Salvați vizualizări configurate special pentru export:
1. Configurați coloanele și filtrele
2. Faceți clic pe **Opțiuni pentru vizualizare** → **Salvați ca vizualizare nouă**
3. Denumiți-o "Export - [Scop]"
### Securizați-vă exporturile
Fișierele exportate pot conține date sensibile:
* Stocați în locații sigure
* Ștergeți exporturile vechi când nu mai sunt necesare
* Aveți grijă când partajați fișierele de export
### Verificați înainte de export
<Check>Coloanele corecte sunt vizibile</Check>
<Check>Filtrele sunt setate corect (sau eliminate pentru export complet)</Check>
<Check>Aveți permisiunea de export</Check>
## Întrebări frecvente
<AccordionGroup>
<Accordion title="De ce lipsesc unele coloane din exportul meu?">
Sunt exportate doar coloanele vizibile. Adăugați coloanele de care aveți nevoie prin **Opțiuni → Câmpuri** înainte de export.
</Accordion>
<Accordion title="De ce nu conține exportul meu toate înregistrările?">
Verificați filtrele. Exportul include doar înregistrările care se potrivesc filtrelor vizualizării curente. Eliminați filtrele pentru a exporta toate înregistrările.
</Accordion>
<Accordion title="Pot exporta mai mult de 20.000 de înregistrări?">
Nu într-un singur export. Folosiți filtre pentru a exporta în loturi sau utilizați API-ul pentru seturi de date mai mari.
</Accordion>
<Accordion title="În ce format este fișierul de export?">
CSV (valori separate prin virgulă). Se deschide în Excel, Google Sheets sau orice aplicație de foi de calcul.
</Accordion>
<Accordion title="Sunt incluse ID-urile de relație?">
Da, dar numai pe partea "many" a relațiilor. De exemplu, un export de Persoane include `companyId`, dar un export de Companii nu include ID-urile persoanelor.
</Accordion>
<Accordion title="Pot automatiza exporturile?">
Nu direct prin interfața de utilizator. Utilizați API-ul pentru a construi fluxuri de lucru de export automatizate.
</Accordion>
</AccordionGroup>
## Pașii următori
* [Cum să actualizați înregistrările existente](/l/ro/user-guide/data-migration/how-tos/update-existing-records-via-import) — editați și reimportați exportul
* [Cum să importați date prin API](/l/ro/user-guide/data-migration/how-tos/import-data-via-api) — pentru seturi de date mari
* [Documentație API](/l/ro/developers/extend/api) — creați fluxuri de lucru de export personalizate

View File

@@ -0,0 +1,430 @@
---
title: Remediați erorile de import
description: Ghid complet de depanare pentru remedierea erorilor de import CSV.
---
## Prezentare generală
Importul nu funcționează? Acest ghid vă ajută să identificați și să remediați, pas cu pas, erorile comune de import.
## Cum funcționează validarea
După încărcarea fișierului și cartografierea coloanelor, douăzeci validează datele:
1. **Se execută validarea** — Douăzeci de verificări pentru fiecare rând pentru erori
2. **Erorile sunt evidențiate** - în **galben** apar rânduri problematice
3. **Poți repara la locul tău** - editează celulele direct în interfața de import
4. **Sau eliminați rândurile** - săriți peste înregistrările problematice în întregime
<Note>**Repară erorile în UI.** Nu trebuie să te întorci la foaia de calcul. Editează celulele direct în timpul importului pentru a economisi timp.</Note>
## Depanare pas cu pas
### Pasul 1: Identifică tipul de eroare
Dă click pe un rând evidențiat pentru a vedea mesajul de eroare specific. Tipuri de erori comune:
| Mesaj de eroare | Ce înseamnă |
| ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| Valori duplicate evidențiate în galben | Valoarea există deja în 20 sau apare de două ori în fișierul dvs. |
| `{field} nu este un {type}` (planează pe celula galbenă) | Datele nu corespund formatului așteptat |
| Câmp obligatoriu evidențiat | Un câmp obligatoriu este gol |
| `Nu se poate conecta la {object}. Nu s-a găsit nicio înregistrare unică...` (import fails) | Nu exista inregistrare referita |
| \`Prea multe înregistrări. Până la 10000 permise" (încărcare blocată) | Fișierul are mai mult de 10.000 de înregistrări |
### Pasul 2: Repară eroarea
Urmați instrucțiunile specifice de mai jos pentru fiecare tip de eroare.
---
## Eroare: Valoare Duplicată
### Ce veți vedea
Rândurile cu valori duplicat sunt **evidențiate în galben** în interfața de import înainte de începerea importului.
### Ce înseamnă
Un câmp unic (e-mail, domeniu) fie:
* Există deja în douăzeci de ani
* Apare de două ori în fișier
### Cum să repari
**Opțiunea 1: Editare valoare duplicat**
1. Faceți clic pe celula cu eroare
2. Schimbă la o valoare unică
3. Continuă cu import
**Opțiunea 2: eliminarea rândului duplicat**
1. Faceți clic pe X de lângă rând
2. Rândul va fi omis în timpul importului
**Opțiunea 3: permiterea actualizării a douăzeci de înregistrări existente**
1. Asigurați-vă că fișierul dvs. include un identificator unic (`email`, `domain`, sau `id`)
2. Hartă câmp unic de identificator
3. Douăzeci de persoane vor actualiza înregistrarea existentă în loc să creeze un duplicat
<Note>
**Puteți actualiza și câmpurile unice.**
* Dacă păstrați `id` dar schimbați `e-mail` → e-mail-ul va fi actualizat
* Dacă păstraţi `e-mail` dar schimbaţi `id` → id-ul va fi actualizat
Atâta timp cât un identificator unic se potrivește, douăzeci actualizează înregistrarea.
</Note>
### Cum să preveniți această eroare
Înainte de import:
1. Sortează foaia de calcul după câmpul unic
2. Elimină rândurile duplicate
3. Verificați dacă înregistrările există deja în douăzeci
<Warning>
**Numar de inregistrari soft-eliminate catre unic.**
Verificaţi Meniul de Comenzi → Vezi înregistrările şterse. (Automatic Translation) Înregistrările de acolo trebuie încă să fie unice. Ștergeți definitiv sau restabiliți și actualizați.
</Warning>
Pentru mai multe detalii: [Constrângeri de unicitate](/l/ro/user-guide/data-migration/capabilities/uniqueness-constraints)
---
## Eroare: Format invalid
### Ce veți vedea
Valoarea celulei este evidențiată în galben. Apasă pentru a vedea mesajul de eroare:
```
{field name} is not a valid {field type}
```
### Ce înseamnă
Datele nu corespund formatului așteptat pentru tipul de câmp.
### Cum să repari — după tipul câmpului
#### Email
**Problemă:** Format e-mail nevalid
**Soluție:** Folosiți formatul `name@domain.com`
```
❌ john.smith@
❌ john smith@acme.com
✓ john.smith@acme.com
```
#### Domeniu
**Problemă:** Formatul consecvent poate cauza duplicate
**Soluție:** Folosiți formatul `https://domain.com` (recomandat)
```
⚠️ acme.com (valid, but not recommended)
⚠️ www.acme.com (valid, but not recommended)
✅ https://acme.com (recommended)
```
<Note>Toate formatele sunt valide, dar `https://domain.com` este recomandat pentru că se potrivește cu formatul folosit de sincronizarea e-mail/calendar. Utilizarea altor formate poate crea companii duplicate.</Note>
#### Dată
**Problemă:** Format de dată nerecunoscut
**Soluție:** Folosește formatul `YYYY-MM-DD` în mod consecvent în întregul fișier
```
✓ 2024-03-15 (YYYY-MM-DD)
❌ 03/15/2024 (MM/DD/YYYY)
❌ 15/03/2024 (DD/MM/YYYY)
```
#### Telefon
**Problemă:** Lipsește coloanele necesare
**Soluție:** Include toate coloanele de telefon
| Coloana | Exemplu |
| -------------------------------------------------------- | ------------ |
| **Telefon / Număr de telefon principal** | `4159095555` |
| **Codul de țară al telefonului principal / Telefonului** | `US` |
| **Cod telefon / apel telefonic** | `+1` |
#### Boolean
**Problemă:** Valoare booleană greșită
**Soluție:** Folosește majuscule `TRUE` sau `FALSE`
```
❌ true
❌ yes
❌ 1
✓ TRUE
✓ FALSE
```
#### Selectați / Multi-Selectare
**Problemă:** Valoarea nu corespunde cu opțiunile existente
**Soluție:** Folosiți **nume API**, nu afișați etichetele
Cum să găsești numele API:
1. Mergeți la **Setări → Modelul de date**
2. Selectați obiectul și câmpul
3. Activează **Mod avansat** (comutare în dreapta jos)
4. Utilizați numele API (de exemplu, `OPTION_1`, nu "Opțiunea 1")
```
❌ High Priority
✓ HIGH_PRIORITY
```
#### Monedă
**Problemă:** Lipsește suma sau codul monedei
**Soluție:** Umple ambele coloane
| Coloana | Exemplu |
| ----------------- | --------- |
| **Sumă / Sumă** | `1234.56` |
| **Sumă / Monedă** | `USD` |
#### Număr
**Problemă:** Caractere nenumărate
**Soluţie:** Doar numere, perioadă pentru zecimale
```
❌ $1,234.56
❌ 1,234.56
✓ 1234.56
```
Pentru trimiterea completă a formatului: [câmp Mapping](/l/ro/user-guide/data-migration/capabilities/field-mapping)
---
## Eroare: Câmpul obligatoriu lipsește
### Ce veți vedea
Rândul este evidențiat cu galben cu celula de câmp dorită.
### Ce înseamnă
Un câmp obligatoriu este gol pentru acest rând.
### Cum să repari
**Opțiunea 1: Introduceți o valoare**
1. Faceți clic pe celula goală
2. Introduceți o valoare
3. Continuă cu import
**Opțiunea 2: eliminarea rândului**
1. Dacă nu ai date, apasă X pentru a sări peste rând
### Cum să preveniți această eroare
Înainte de import, identificați câmpurile obligatorii:
1. Mergeți la **Setări → Modelul de date**
2. Selectează obiectul tău
3. Verificați care câmpuri sunt marcate ca obligatorii
---
## Eroare: Relația nu a fost găsită
### Ce veți vedea
Această eroare apare **după începerea importului** - importul eșuează cu un mesaj precum:
```
Can't connect to company. No unique record found with condition: id = 7776ee49-f608-4a77-8cc8-6fe96ae1e43f
```
Aceasta înseamnă că nu există nicio societate comercială în douăzeci de exemplare cu acest identificator specific.
<Note>Spre deosebire de alte erori, aceasta nu este prinsă în timpul pasului de revizuire a datelor. Importul va începe şi apoi va eşua atunci când se întâlneşte cu relaţia lipsă.</Note>
### Ce înseamnă
Încercați să vă conectați la o înregistrare care nu există în douăzeci de ani.
### Cum să repari
**Opțiunea 1: Importați mai întâi înregistrările părinte**
1. Anulează importul curent
2. Importă înregistrările părinte (de exemplu, societăți)
3. Apoi se importă înregistrările cu copii (de exemplu, oameni)
\*\*Opțiunea 2: Repararea valorii de referință
1. Verifică valoarea de referință din fișierul tău
2. Asigurați-vă că se potrivește exact cu o înregistrare existentă
3. Verificați formatul: domeniile ar trebui să fie `https://domain.com`
**Opțiunea 3: Eliminarea relației**
1. Curăță celula de importat fără legătură
2. Adaugă relația manual mai târziu
### Cum să preveniți această eroare
1. **Importă în ordinea corectă:**
* Societăți primele
* Persoane a doua (cu referința companiei)
* Oportunități a treia
2. **Verificați valorile de referință:**
* Exporta inregistrarile parinte pentru a obtine identificatori exacti
* Folosiți formatul de domeniu `https://domain.com`
* Verificați dacă există caractere și senzitivitatea carcaselor
<Warning>
**Importul va eşua dacă se face referire la o înregistrare inexistentă.**
Întotdeauna importă obiecte părinte înainte de obiecte copil.
</Warning>
Pentru mai multe detalii: [Importă Relații](/l/ro/user-guide/data-migration/capabilities/import-relations)
---
## Eroare: Fișier prea mare
### Ce veți vedea
Această eroare apare **la încărcarea fișierului** — încărcarea este blocată în întregime:
```
Too many records. Up to 10000 allowed
```
Nu veți putea trece la pasul de revizuire a datelor până când nu reduceți dimensiunea fișierului.
### Ce înseamnă
Fişierul are mai mult de 10.000 de înregistrări.
### Cum să repari
**Opțiunea 1: Împărțirea în mai multe fișiere**
1. Împărțiți datele în fișiere cu 10.000 de înregistrări sau mai puține
2. Importă fiecare fișier separat
3. Menține comanda de import (Companiile înainte de oameni)
**Opțiunea 2: Utilizați API import**
pentru seturi de date foarte mari, utilizați API-ul care nu are o limită de înregistrare.
Vedeți: [Cum să importați date prin API](/l/ro/user-guide/data-migration/how-tos/import-data-via-api)
---
## Eroare: Câmpul nu este recunoscut
### Ce înseamnă
O coloană din fișierul dvs. nu poate fi cartografiată deoarece câmpul nu există în Twenty.
### Cum să repari
1. Mergeți la **Setări → Modelul de date**
2. Selectați obiectul pe care îl importați
3. Click \*\*+ Adauga cîmp \*\*
4. Creați câmpul personalizat cu tipul corespunzător
5. Reîncărcați fișierul
<Note>Importul CSV creează înregistrări, nu câmpuri. Toate câmpurile trebuie să existe înainte de import.</Note>
---
## Eroare: Relația utilizatorului este goală
### Ce înseamnă
Încercați să atribuiți o înregistrare unui utilizator (Owner, Assignee), dar relația nu este cartografiată.
### Frecvente Cauze
1. **Utilizatorul nu și-a acceptat invitația** — utilizatorul nu există încă în douăzeci de ani
2. **Folosind ID-ul utilizatorului din vechi** — Douăzeci de utilizatori nu se pot potrivi ID-urile din alt sistem
3. **Format de e-mail greșit** - e-mailul nu se potrivește cu contul de 20 de utilizatori
### Cum să repari
1. Asigurați-vă că toți utilizatorii și-au **acceptat invitația** în spațiul de lucru de douăzeci
2. Folosiți **adresa de e-mail a utilizatorului** (nu numele sau vechea ID-ul de sistem)
3. Folosiți același e-mail pe care l-au folosit pentru a se alătura celor douăzeci
<Warning>
**Utilizatorii trebuie să accepte invitațiile înainte de import.**
Dacă un utilizator nu a acceptat invitația, înregistrările cu privire la ei vor avea relații de utilizator goale.
</Warning>
---
## Lista de verificare pre-import
Evită erorile verificându-le înainte de import:
### Fişier Cerinţe
<Check>Fișierul este CSV, XLSX sau formatul XLS</Check>
<Check>Fișierul are mai puțin de 10.000 înregistrări</Check>
<Check>Fișierul folosește codificarea UTF-8</Check>
### Calitatea datelor
<Check>Nu există e-mailuri duplicate (pentru oameni)</Check>
<Check>Nu există domenii duplicate (pentru companii)</Check>
<Check>Toate datele folosesc formatul consistent</Check>
<Check>Toate domeniile folosesc \`https://domain. formatul</Check>
### Formate câmp
<Check>Câmpurile Boolean folosesc `TRUE` sau `FALSE` (majuscule)</Check>
<Check>Selectează câmpurile folosesc numele API, nu afișează etichetele</Check>
<Check>Câmpurile de telefon au toate coloanele obligatorii</Check>
<Check>Câmpurile valutare au atât Suma cât și Codul Valutar</Check>
### Relații
<Check>Înregistrările părinte importate înainte de înregistrările copil</Check>
<Check>Coloane de referință înregistrările existente</Check>
<Check>Formatul domeniului corespunde formatului Twenty exact</Check>
### Model de date
<Check>Toate câmpurile personalizate există în Setări → Modelul de date</Check>
<Check>Există opțiuni înainte de a importa</Check>
---
## Încă aveți probleme?
Dacă aţi încercat soluţiile de mai sus:
1. **Descarcă eșantionul de fișier** - vezi formatul exact pe care douăzeci îl așteaptă
2. **Exportă înregistrările existente** - compară fișierul cu datele de lucru
3. **Testează cu un lot mic** - încearcă mai întâi 5-10 rânduri
4. **Verificați articolele de referință:**
* [Mapare câmpuri](/l/ro/user-guide/data-migration/capabilities/field-mapping)
* [Constrângeri unice](/l/ro/user-guide/data-migration/capabilities/uniqueness-constraints)
* [Importă Relații](/l/ro/user-guide/data-migration/capabilities/import-relations)
* [Gestionare eroare](/l/ro/user-guide/data-migration/capabilities/error-handling)

View File

@@ -0,0 +1,201 @@
---
title: Importați companii via CSV
description: Ghid complet, pas cu pas, pentru importul companiilor în Twenty.
---
## Prezentare generală
Acest ghid vă arată cum să importați companiile în Twenty. **Companiile ar trebui importate mai întâi** deoarece Persoanele și Oportunitățile se leagă de Companii.
## Înainte de a începe
### Listă de verificare a condițiilor prealabile
<Check>
Fișierul este în format CSV, XLSX sau XLS
</Check>
<Check>
Fișierul are mai puțin de 10.000 de înregistrări
</Check>
<Check>
Niciun domeniu duplicat în fișierul dvs.
</Check>
<Check>
Toate câmpurile personalizate există în **Setări → Model de date**
</Check>
<Note>
Trebuie să importați mai mult de 10.000 de companii? Împărțiți în mai multe fișiere sau utilizați [importul prin API](/l/ro/user-guide/data-migration/how-tos/import-data-via-api).
</Note>
## Pasul 1: Pregătiți datele companiei
### Câmpuri obligatorii și recomandate
| Câmp | Obligatoriu? | Format | Notițe |
| ------------------------- | ------------ | -------------------- | ------------------------------------ |
| **Name** | Recomandat | Text | Numele afișat al companiei |
| **Domeniu** | Recomandat | `https://domain.com` | Identificator unic |
| **Adresă** | Opțional | Mai multe coloane | Consultați mai jos |
| **Angajați** | Opțional | Număr | Număr de angajați |
| **Câmpuri personalizate** | Opțional | Variază | Trebuie să existe în Modelul de date |
### Formatul domeniului
<Warning>
**Folosiți formatul `https://domain.com` pentru domenii.**
Acesta corespunde formatului folosit când Companiile sunt create automat din sincronizarea emailului/calendarului, prevenind duplicatele ulterior.
</Warning>
**Coloane pentru domeniu:**
* **Domeniu / Etichetă de domeniu**: `acme.com`
* **Domeniu / URL domeniu**: `https://acme.com`
### Formatul adresei
Adresa este un câmp îmbricat cu mai multe coloane:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
### Exemplu de structură CSV
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
Acme Corp,https://acme.com,acme.com,San Francisco,USA,250
Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
<Note>
**Sfat profesional:** Faceți clic pe **Download sample file** în timpul importului pentru a vedea denumirile exacte ale coloanelor pe care le așteaptă Twenty.
</Note>
## Pasul 2: Accesați funcția de import
**Opțiunea 1: Din vizualizarea Companii**
1. Navigați la **Companii** în bara laterală stângă
2. Faceți clic pe pictograma **⋮** din dreapta sus
3. Selectați **Importă înregistrări**
**Opțiunea 2: Folosind meniul de comenzi**
1. Apăsați `Cmd + K` (Mac) sau `Ctrl + K` (Windows)
2. Tastați "import"
3. Selectați **Importă înregistrări**
4. Alegeți **Companii**
## Pasul 3: Încărcați fișierul
1. Faceți clic pe **Select file**
2. Alegeți fișierul CSV, XLSX sau XLS
3. Așteptați ca Twenty să analizeze fișierul
## Pasul 4: Mapați coloanele
Twenty încearcă automat să potrivească coloanele cu câmpurile. Revizuiți și ajustați:
1. **Verificați mapările automate** — confirmați că sunt corecte
2. **Corectați mapările incorecte** — faceți clic pe lista derulantă pentru a selecta câmpul corect
3. **Omiteți coloanele** — selectați **Do not map** pentru coloanele pe care nu doriți să le importați
### Reguli importante de mapare
* **Domeniu**: Mapați la **Domain / Domain URL** (nu la Domain Label)
* **Adresă**: Mapați fiecare parte la coloana sa specifică (City, State etc.)
* **Câmpuri Select**: Valorile trebuie să corespundă opțiunilor existente (sau le veți mapa în pasul următor)
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
## Pasul 5: Mapați valorile câmpurilor Select
Dacă aveți câmpuri Select sau Multi-Select:
1. Twenty afișează valorile dvs. alături de opțiunile existente
2. Asociați fiecare valoare din fișierul dvs. cu o opțiune Twenty
3. Sau creați opțiuni noi, dacă este necesar
<Note>
Opțiunile Select folosesc **nume API**, nu etichete de afișare. Accesați **Setări → Model de date** → activați **Mod avansat** pentru a vedea numele API.
</Note>
## Pasul 6: Revizuiți și remediați erorile
Înainte de a finaliza importul, Twenty vă validează datele:
1. Faceți clic pe **Pașii următori**
2. Rândurile cu erori sunt evidențiate cu **galben**
3. **Remediați erorile direct** — faceți clic pe o celulă și editați valoarea
4. **Eliminați rândurile problematice** — faceți clic pe X pentru a sări peste acel rând
### Erori frecvente la importul companiilor
| Eroare | Cauză | Soluție |
| ----------------------------- | ------------------------------ | ------------------------------------------------------------ |
| **Domeniu duplicat** | Domeniul există deja în Twenty | Eliminați din fișier sau actualizați înregistrarea existentă |
| **Format de domeniu invalid** | Format greșit | Folosiți `https://domain.com` |
| **Câmp obligatoriu lipsă** | Câmpul obligatoriu este gol | Completați valoarea sau eliminați rândul |
## Pasul 7: Finalizați importul
1. Revizuiți rezumatul importului
2. Faceți clic pe **Confirmă** pentru a importa
3. Așteptați finalizarea importului
4. Verificați consultând câteva înregistrări
## După importarea companiilor
Acum puteți importa înregistrări care se leagă de Companii:
1. **[Importați Persoane](/l/ro/user-guide/data-migration/how-tos/import-contacts-via-csv)** — legați-le de Companii folosind domeniul
2. **Importați Oportunități** — legați-le de Companii
3. **Verificați importul** — verificați punctual câteva înregistrări pentru a vă asigura că datele sunt corecte
## Actualizarea companiilor existente
Pentru a actualiza companiile în loc să creați unele noi:
1. Includeți coloana `domain` sau `id` în fișierul dvs.
2. Twenty potrivește înregistrările după acest identificator unic
3. Companiile existente sunt actualizate; cele noi sunt create
Consultați [Cum să actualizați înregistrările existente](/l/ro/user-guide/data-migration/how-tos/update-existing-records-via-import) pentru detalii.
## Întrebări frecvente
<AccordionGroup>
<Accordion title="De ce nu pot două companii să aibă același domeniu?">
Domeniul este un identificator unic în Twenty. Acest lucru previne companiile duplicate și asigură că sincronizarea emailului leagă corect emailurile de compania potrivită.
</Accordion>
<Accordion title="Ce fac dacă am companii fără domeniu?">
Puteți lăsa domeniul necompletat. Totuși, recomandăm să adăugați domenii atunci când este posibil, pentru o calitate mai bună a datelor și pentru legarea automată a emailurilor.
</Accordion>
<Accordion title="Pot importa companii fără nicio Persoană asociată?">
Da! Puteți importa mai întâi companiile, apoi să importați ulterior Persoane și să le asociați folosind domeniul companiei.
</Accordion>
<Accordion title="Ce se întâmplă dacă import un domeniu care există deja?">
Dacă includeți un identificator unic (domeniu sau id) care se potrivește unei companii existente, Twenty actualizează acea companie în loc să creeze un duplicat.
</Accordion>
<Accordion title="Cum remediez erorile 'duplicate domain'?">
Eliminați duplicatul din fișier sau includeți `id`-ul companiei pentru a actualiza în schimb înregistrarea existentă.
</Accordion>
</AccordionGroup>
## Depanare
Aveți probleme? Verificați:
* [Cum să remediați erorile de import](/l/ro/user-guide/data-migration/how-tos/fix-import-errors)
* [Referință pentru maparea câmpurilor](/l/ro/user-guide/data-migration/capabilities/field-mapping)
* [Constrângeri de unicitate](/l/ro/user-guide/data-migration/capabilities/uniqueness-constraints)

View File

@@ -0,0 +1,242 @@
---
title: Importați contacte via CSV
description: Ghid complet, pas cu pas, pentru importul persoanelor/contactelor în Twenty.
---
## Prezentare generală
Acest ghid vă arată cum să importați contactele (Persoane) în Twenty.
## Înainte de a începe
### Listă de verificare a condițiilor prealabile
<Check>
Fișierul este în format CSV, XLSX sau XLS
</Check>
<Check>
Fișierul are mai puțin de 10.000 de înregistrări
</Check>
<Check>
Nicio adresă de e-mail duplicată în fișier
</Check>
<Check>
**Companiile importate mai întâi** (dacă legați Persoane de Companii)
</Check>
<Check>
Toate câmpurile personalizate există în **Setări → Model de date**
</Check>
<Warning>
**Importați Companiile înaintea Persoanelor**
Dacă doriți să legați Persoane de Companii, importați mai întâi Companiile. Compania trebuie să existe înainte de a o putea referi.
</Warning>
## Pasul 1: Pregătiți datele de contact
### Câmpuri obligatorii și recomandate
| Câmp | Obligatoriu? | Format | Notițe |
| ------------------------- | ------------ | ----------------- | ------------------------------------ |
| **Email** | Recomandat | `name@domain.com` | Trebuie să fie unică |
| **Prenume** | Recomandat | Text | |
| **Nume de familie** | Recomandat | Text | |
| **Companie** | Opțional | Domeniu sau ID | Leagă de Compania existentă |
| **Telefon** | Opțional | Mai multe coloane | Consultați mai jos |
| **Funcție** | Opțional | Text | |
| **Câmpuri personalizate** | Opțional | Variază | Trebuie să existe în Modelul de date |
### Format e-mail
* Trebuie să fie în format de e-mail valid: `name@domain.com`
* **Trebuie să fie unică** — fără duplicate în fișierul dvs. sau în Twenty
* Pentru e-mailuri suplimentare, folosiți coloana **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### Format telefon
Telefonul este un **câmp îmbricat** care necesită mai multe coloane:
| Coloană | Exemplu |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### Conectarea la Companii
Adăugați o coloană cu identificatorul unic al Companiei:
| Nume coloană | Format | Exemplu |
| --------------- | ---------- | -------------------------------------- |
| `companyDomain` | Format URL | `https://acme.com` |
| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Note>
**Folosiți formatul URL de domeniu** (`https://acme.com`), nu eticheta. Acest lucru corespunde modului în care Companiile sunt stocate în Twenty.
</Note>
### Exemplu de structură CSV
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
John,Smith,john@acme.com,CEO,https://acme.com,4159095555,US
Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
<Note>
**Sfat profesional:** Faceți clic pe **Download sample file** în timpul importului sau exportați câteva Persoane existente pentru a vedea denumirile exacte ale coloanelor pe care le așteaptă Twenty.
</Note>
## Pasul 2: Accesați funcția de import
**Opțiunea 1: Din vizualizarea Persoane**
1. Navigați la **Persoane** în bara laterală stângă
2. Faceți clic pe pictograma **⋮** din dreapta sus
3. Selectați **Importă înregistrări**
**Opțiunea 2: Folosind meniul de comenzi**
1. Apăsați `Cmd + K` (Mac) sau `Ctrl + K` (Windows)
2. Tastați "import"
3. Selectați **Importă înregistrări**
4. Alegeți **Persoane**
## Pasul 3: Încărcați fișierul
1. Faceți clic pe **Select file**
2. Alegeți fișierul CSV, XLSX sau XLS
3. Așteptați ca Twenty să analizeze fișierul
## Pasul 4: Mapați coloanele
Twenty încearcă automat să potrivească coloanele cu câmpurile. Revizuiți și ajustați:
1. **Verificați mapările automate** — confirmați că sunt corecte
2. **Corectați mapările incorecte** — faceți clic pe lista derulantă pentru a selecta câmpul corect
3. **Omiteți coloanele** — selectați **Do not map** pentru coloanele pe care nu doriți să le importați
### Reguli importante de mapare
| Tip coloană | Mapați la | Notițe |
| ---------------------- | ------------------------------ | -------------------------------------- |
| Referință companie | Câmpul de relație **Company** | Folosiți domeniul SAU id-ul, nu ambele |
| Email | **Email** | Adresă de e-mail principală |
| E-mailuri suplimentare | **Emails / Additional Emails** | Format de array |
| Telefon | Coloane separate | Număr, Codul țării, Prefix de apelare |
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
### Maparea relației de Companie
Când mapați coloana companiei:
1. Găsiți coloana de referință a companiei (de ex., `companyDomain`)
2. Mapați-o la câmpul de relație **Company**
3. Twenty va lega fiecare Persoană de Compania corespunzătoare
<Warning>
**Mapați un singur identificator unic pentru relații.**
Nu mapați atât `companyId`, cât și `companyDomain`. Alegeți una — de preferat domeniul, deoarece este ușor de citit de către oameni.
</Warning>
## Pasul 5: Mapați valorile câmpurilor Select
Dacă aveți câmpuri Select sau Multi-Select (cum ar fi Sursa leadului):
1. Twenty afișează valorile dvs. alături de opțiunile existente
2. Asociați fiecare valoare din fișierul dvs. cu o opțiune Twenty
3. Sau creați opțiuni noi, dacă este necesar
<Note>
Opțiunile Select folosesc **nume API**, nu etichete de afișare. Accesați **Setări → Model de date** → activați **Mod avansat** pentru a vedea numele API.
</Note>
## Pasul 6: Revizuiți și remediați erorile
Înainte de a finaliza importul, Twenty vă validează datele:
1. Faceți clic pe **Pașii următori**
2. Rândurile cu erori sunt evidențiate cu **galben**
3. **Remediați erorile direct** — faceți clic pe o celulă și editați valoarea
4. **Eliminați rândurile problematice** — faceți clic pe X pentru a sări peste acel rând
### Erori frecvente la importul contactelor
| Eroare | Cauză | Soluție |
| ---------------------------- | ------------------------------------------- | ------------------------------------------------------------ |
| **Email duplicat** | Emailul există deja în Twenty sau în fișier | Eliminați duplicatul sau actualizați înregistrarea existentă |
| **Format de email invalid** | Formatul emailului este incorect | Corectați la `name@domain.com` |
| **Relația nu a fost găsită** | Compania nu există | Importați mai întâi Companiile sau corectați referința |
| **Câmp obligatoriu lipsă** | Câmpul obligatoriu este gol | Completați valoarea sau eliminați rândul |
## Pasul 7: Finalizați importul
1. Revizuiți rezumatul importului
2. Faceți clic pe **Confirmă** pentru a importa
3. Așteptați finalizarea importului
4. Verificați examinând câteva înregistrări și linkurile lor către Companie
## După importarea contactelor
Contactele dvs. sunt acum în Twenty! Pașii următori:
1. **Verificați linkurile către Companie** — deschideți câteva înregistrări de tip Persoană pentru a confirma că sunt legate de Compania corectă
2. **Importați Oportunități** — dacă este nevoie, legați-le de Persoane și Companii
3. **Configurați sincronizarea emailului** — conectați căsuța poștală pentru a vedea istoricul emailurilor în înregistrările de contact
## Actualizarea contactelor existente
Pentru a actualiza contactele în loc să creați unele noi:
1. Includeți coloana `email` sau `id` în fișierul dvs.
2. Twenty potrivește înregistrările după acest identificator unic
3. Contactele existente sunt actualizate; cele noi sunt create
Consultați [Cum să actualizați înregistrările existente](/l/ro/user-guide/data-migration/how-tos/update-existing-records-via-import) pentru detalii.
## Întrebări frecvente
<AccordionGroup>
<Accordion title="De ce nu pot două Persoane să aibă același email?">
Emailul este un identificator unic în Twenty. Acest lucru previne contactele duplicate și asigură că sincronizarea emailului leagă corect emailurile de persoana potrivită.
</Accordion>
<Accordion title="Ce fac dacă am Persoane fără email?">
Puteți lăsa câmpul email necompletat. Totuși, recomandăm să adăugați emailuri când este posibil, pentru o calitate mai bună a datelor și pentru o funcționalitate mai bună a sincronizării emailului.
</Accordion>
<Accordion title="Cum leg Persoanele de Companii în timpul importului?">
Adăugați o coloană cu domeniul Companiei (de ex., `https://acme.com`) sau ID-ul. În timpul mapării, conectați această coloană la câmpul de relație al Companiei.
</Accordion>
<Accordion title="Ce fac dacă Compania nu există încă?">
Importați mai întâi Companiile, apoi importați Persoanele. Compania trebuie să existe înainte de a o putea referi.
</Accordion>
<Accordion title="Pot importa ID-ul din CRM-ul meu anterior?">
Da! Creați un câmp personalizat marcat ca "unic" în modelul dvs. de date pentru a stoca ID-ul extern. Notă: numele câmpului `id` este rezervat pentru ID-ul intern al Twenty.
</Accordion>
<Accordion title="Cum remediez erorile 'relation not found'?">
Compania la care faceți referire nu există. Importați mai întâi Compania sau verificați că domeniul/ID-ul corespunde exact unei Companii existente.
</Accordion>
</AccordionGroup>
## Depanare
Aveți probleme? Verificați:
* [Cum să remediați erorile de import](/l/ro/user-guide/data-migration/how-tos/fix-import-errors)
* [Cum să importați relații](/l/ro/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [Referință pentru maparea câmpurilor](/l/ro/user-guide/data-migration/capabilities/field-mapping)

View File

@@ -0,0 +1,176 @@
---
title: Importați date prin API
description: Când și cum să utilizați API-urile Twenty pentru importuri de date la scară mare.
---
## Prezentare generală
Twenty oferă atât **GraphQL**, cât și **API-uri REST** pentru importul programatic de date. Utilizați API-ul când importul CSV nu este practic pentru volumul dvs. de date sau când aveți nevoie de importuri automate, recurente.
## Când să utilizați importul prin API
| Scenariu | Metodă recomandată |
| -------------------------------- | -------------------------------- |
| Sub 10.000 de înregistrări | Import CSV |
| 10.000 - 50.000 de înregistrări | Import CSV (împărțit în fișiere) |
| **Peste 50.000 de înregistrări** | **Import prin API** |
| Migrare unică | Oricare (în funcție de volum) |
| **Importuri recurente** | **Import prin API** |
| **Sincronizare în timp real** | **Import prin API** |
| **Integrare cu alte sisteme** | **Import prin API** |
<Note>Pentru seturi de date de ordinul sutelor de mii, API-ul este semnificativ mai rapid și mai fiabil decât importurile CSV multiple.</Note>
## Limitări de rată API
Twenty impune limitări de rată pentru a asigura stabilitatea sistemului:
| Limită | Valoare |
| -------------------------------- | ------------------------- |
| **Cereri pe minut** | 100 |
| **Înregistrări per apel de lot** | 60 |
| **Debit maxim** | ~6.000 înregistrări/minut |
<Warning>
**Planificați importul în jurul acestor limite.**
Pentru 100.000 de înregistrări la debit maxim, așteptați-vă la aproximativ 17 minute de timp de import. Adăugați timp tampon pentru gestionarea erorilor și reîncercări.
</Warning>
## Începeți
### Pasul 1: Obțineți cheia API
1. Accesați **Setări → Dezvoltatori**
2. Faceți clic pe **+ Creați cheie API**
3. Dați cheii un nume descriptiv
4. Copiați imediat cheia API (nu va mai fi afișată).
5. Stocați-o în siguranță
<Warning>
**Păstrați cheia API secretă.**
Oricine are cheia dvs. API poate accesa și modifica datele din spațiul dvs. de lucru. Nu o includeți niciodată în repozitorii de cod și nu o distribuiți public.
</Warning>
### Pasul 2: Alegeți API-ul
Twenty acceptă două tipuri de API:
| API | Cel mai potrivit pentru | Documentație |
| ----------- | --------------------------------------------------------------------- | ------------------------------------------ |
| **GraphQL** | Interogări flexibile, preluarea datelor asociate, operațiuni complexe | [Documentație API](/l/ro/developers/extend/api) |
| **REST** | Operațiuni CRUD simple, tipare REST familiare | [Documentație API](/l/ro/developers/extend/api) |
Ambele API-uri acceptă:
* Crearea, citirea, actualizarea și ștergerea înregistrărilor
* **Operațiuni în lot** — creați sau actualizați până la 60 de înregistrări per apel
**Pentru importuri, utilizați operațiuni în lot** pentru a maximiza debitul în limitele de rată.
### Pasul 3: Planificați ordinea de import
La fel ca la importurile CSV, **ordinea contează** pentru relații:
1. **Companii** mai întâi (fără dependențe)
2. **Persoane** în al doilea rând (pot fi legate de Companii)
3. **Oportunități** în al treilea rând (pot fi legate de Companii și Persoane)
4. **Sarcini/Note** (pot fi legate de oricare dintre cele de mai sus)
5. **Obiecte personalizate** (respectând dependențele lor)
## Cele mai bune practici
### Grupați cererile în loturi
* Nu trimiteți înregistrările una câte una
* Grupați până la **60 de înregistrări per apel API**
* Aceasta maximizează debitul în limitele de rată
### Gestionați limitările de rată
* Implementați întârzieri între cereri (minim 600 ms pentru importuri susținute)
* Utilizați backoff exponențial când atingeți limitele
* Monitorizați răspunsurile 429 (Too Many Requests)
### Validați datele mai întâi
* Curățați și validați datele înainte de import
* Verificați ca câmpurile obligatorii să fie completate
* Verificați că formatele corespund cerințelor Twenty (consultați [Maparea câmpurilor](/l/ro/user-guide/data-migration/capabilities/field-mapping))
### Jurnalizați totul
* Jurnalizați fiecare înregistrare importată (inclusiv ID-urile)
* Jurnalizați erorile cu tot contextul
* Acest lucru ajută la depanarea problemelor și la verificarea finalizării
### Testați mai întâi
* Testați cu un lot mic (10-20 de înregistrări)
* Verificați că datele apar corect în Twenty
* Apoi rulați importul complet
### Upsert pentru a evita duplicatele
API-ul GraphQL acceptă **upsert în lot** — actualizați dacă înregistrarea există, creați dacă nu. Acest lucru previne duplicatele când rulați din nou importurile.
## Găsirea numelor de obiecte și câmpuri
Pentru a vedea obiectele și câmpurile disponibile:
1. Accesați **Setări → API și webhook-uri**
2. Explorați **Metadata API**
3. Vizualizați toate obiectele standard și personalizate cu câmpurile lor
Documentația prezintă toate obiectele standard și personalizate, câmpurile acestora și tipurile de date așteptate.
## Servicii Profesionale
Pentru migrații API complexe, partenerii noștri vă pot ajuta:
| Serviciu | Ce este inclus |
| --------------------------------- | ---------------------------------------- |
| **Proiectarea modelului de date** | proiectați structura optimă a datelor |
| **Scripturi de migrare** | scrieți și rulați scripturile de import |
| **Transformare de date** | gestionați maparea complexă și curățarea |
| **Validare și QA** | verificați că migrarea este completă |
**Cel mai potrivit pentru:**
* Migrări de peste 100.000 de înregistrări
* Transformări complexe ale datelor
* Termene strânse
* Echipe fără resurse de dezvoltare
Contactați-ne la [contact@twenty.com](mailto:contact@twenty.com) sau explorați [Serviciile noastre de implementare](/l/ro/user-guide/getting-started/capabilities/implementation-services).
## Întrebări frecvente
<AccordionGroup>
<Accordion title="Care este diferența dintre GraphQL și REST?">
GraphQL vă permite să solicitați exact datele de care aveți nevoie într-o singură interogare și este mai potrivit pentru operațiuni complexe. REST folosește metode HTTP standard (GET, POST, PUT, DELETE) și poate fi mai familiar dacă ați lucrat cu API-uri tradiționale.
</Accordion>
<Accordion title="Pot actualiza înregistrările existente prin API?">
Da! Utilizați mutații de tip update (GraphQL) sau cereri PUT/PATCH (REST) cu `id`-ul înregistrării.
</Accordion>
<Accordion title="Cum gestionez duplicatele?">
Interogați mai întâi înregistrările existente folosind identificatori unici (email, domeniu). Actualizați dacă există, creați dacă nu.
</Accordion>
<Accordion title="Pot șterge înregistrări prin API?">
Da, utilizați mutații de tip delete (GraphQL) sau cereri DELETE (REST).
</Accordion>
<Accordion title="Există un SDK pentru Python sau Node.js?">
În prezent nu, dar ambele API-uri funcționează cu orice client HTTP, în orice limbaj.
</Accordion>
</AccordionGroup>
## Documentație API
Pentru detalii complete de implementare, exemple de cod și referință de schemă:
* [Documentație API](/l/ro/developers/extend/api)

View File

@@ -0,0 +1,225 @@
---
title: Importați relațiile dintre obiecte prin CSV
description: Ghid complet, pas cu pas, pentru asocierea înregistrărilor în timpul importului CSV.
---
## Prezentare generală
Acest ghid vă arată cum să importați relațiile dintre obiecte — de exemplu, să asociați Persoane la Companii sau Oportunități la Persoane.
<Note>**Ce poate fi importat:** Doar relații de tip unu-la-mulți care indică către un singur tip de obiect. Relațiile care indică către mai multe tipuri de obiect (cum ar fi Notele care se leagă de Persoane ȘI Companii) nu sunt încă acceptate pentru import.</Note>
## Înțelegerea relațiilor
### Ce este o relație "unu-la-mulți"?
Într-o relație unu-la-mulți:
* **O** companie are **multe** persoane (angajați)
* **O** companie are **multe** oportunități
* **O** persoană are **multe** sarcini
Partea "unu" este **părintele**. Partea "mulți" este **copilul**.
### Relații obișnuite în Twenty
| Relație | Partea "unu" (părinte) | Partea "mulți" (copil) |
| ----------------------- | ---------------------- | ---------------------- |
| Companii → Persoane | Companie | Persoane |
| Companii → Oportunități | Companie | Oportunități |
| Persoane → Sarcini | Persoană | Sarcini |
| Persoane → Note | Persoană | Notițe |
## Pasul 1: Identificați părțile „unu” și „mulți”
Înainte de import, stabiliți care obiect este părinte și care este copil.
**Întrebați-vă:** "Are UN [Obiect A] MULTE [Obiect B]?"
* O companie → Multe persoane ✓ (Compania este părinte)
* O persoană → Multe companii ✗ (Greșit — o persoană aparține unei singure companii)
## Pasul 2: Importați mai întâi înregistrările părinte
Înregistrarea părinte (partea „unu”) trebuie să existe în Twenty înainte de a o putea referi.
**Ordinea importului:**
1. **Companii** mai întâi (fără dependențe)
2. **Persoane** în al doilea rând (legate de Companii)
3. **Oportunități** în al treilea rând (legate de Companii și/sau Persoane)
4. **Sarcini/Note** (legate de oricare dintre cele de mai sus)
<Warning>
**Dacă înregistrarea părinte nu există, importul va eșua.**
Verificați întotdeauna că companiile au fost importate înainte de a importa persoane cu referințe la companie.
</Warning>
## Pasul 3: Notați identificatorul unic al părintelui
Trebuie să faceți referire la înregistrarea părinte folosind un **identificator unic**. Opțiuni disponibile:
| Obiect părinte | Identificatori unici disponibili |
| -------------------------------- | ------------------------------------------------------------------- |
| **Companii** | `id` (UUID), `domain` (recomandat) sau orice câmp unic personalizat |
| **Persoane** | `id` (UUID), `email` sau orice câmp unic personalizat |
| **Membri ai Spațiului de Lucru** | `id` (UUID), `email` (nu numele) |
| **Obiecte personalizate** | `id` (UUID) sau orice câmp marcat ca unic |
<Note>**Recomandat:** Folosiți `domain` pentru Companii și `email` pentru Persoane. Acestea sunt ușor de citit de către oameni și ușor de verificat în foaia de calcul.</Note>
### Găsirea identificatorului
Dacă aveți nevoie de `id`:
1. Exportați înregistrările părinte din Twenty
2. Exportul include coloana `id`
3. Folosiți aceste ID-uri în fișierul cu înregistrări copil
## Pasul 4: Verificați existența câmpului de relație
Înainte de import, asigurați-vă că există câmpul de relație între obiectele dvs.
**Pentru a verifica sau crea:**
1. Accesați **Setări → Model de date**
2. Selectați obiectul copil (de ex., Persoane)
3. Căutați un câmp de relație care indică către părinte (de ex., Companie)
4. Dacă nu există, creați-l:
* Faceți clic pe **+ Adaugă câmp**
* Selectați tipul **Relație**
* Alegeți obiectul părinte
## Pasul 5: Pregătiți fișierul CSV
Adăugați o coloană în CSV-ul obiectului copil care face referire la părinte folosind identificatorul său unic.
### Exemplu: Persoane asociate cu Companii
**CSV-ul dvs. cu Persoane:**
```csv
firstName,lastName,email,jobTitle,companyDomain
John,Smith,john@acme.com,CEO,https://acme.com
Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```
Coloana `companyDomain` face referire la domeniul companiei.
### Cerințe de format
| Identificator | Format | Exemplu |
| ------------- | -------------- | -------------------------------------- |
| Domeniu | Format URL | `https://acme.com` |
| Email | Email standard | `john@acme.com` |
| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Warning>
**Formatul domeniului contează!**
Folosiți `https://domain.com` (nu doar `domain.com`). Acest lucru corespunde modului în care Twenty stochează domeniile companiilor și previne erorile de potrivire.
</Warning>
### Reguli importante
1. **Potrivire exactă necesară** — valoarea trebuie să corespundă exact înregistrării părinte
2. **Mapați doar UN identificator unic** — nu includeți atât `companyId`, cât și `companyDomain`
3. **Sensibil la majuscule/minuscule** — `Acme.com` ≠ `acme.com`
## Pasul 6: Încărcați și mapați relația
1. Navigați la obiectul copil (de ex., Persoane)
2. Faceți clic pe **⋮** → **Import records**
3. Încărcați fișierul CSV
4. În etapa de mapare a câmpurilor:
* Găsiți coloana relației (de ex., `companyDomain`)
* Mapați-o la câmpul de relație **Company**
5. Finalizați maparea rămasă
6. Revizuiți erorile și confirmați
Twenty va lega automat fiecare înregistrare copil de părintele corespunzător.
## Pasul 7: Verificați importul
După import:
1. Deschideți câteva înregistrări copil (de ex., Persoane)
2. Verificați că câmpul de relație arată părintele corect (de ex., Companie)
3. Deschideți o înregistrare părinte și verificați secțiunea de înregistrări asociate
## Greșeli comune de evitat
| Greșeală | Problemă | Soluție |
| -------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------ |
| **Ordine greșită a importului** | Importarea Persoanelor înaintea Companiilor | Importați întotdeauna mai întâi părinții, apoi copiii |
| **Format de domeniu greșit** | Folosirea `acme.com` în loc de `https://acme.com` | Folosiți formatul URL complet cu `https://` |
| **Câmpuri unice multiple** | Maparea atât a `companyId`, cât și a `companyDomain` | Mapați un singur identificator unic |
| **Câmp de relație lipsă** | Câmpul de relație nu există în modelul de date | Creați-l în **Setări → Model de date** înainte de import |
| **Înregistrări inexistente** | Înregistrarea părinte nu există în Twenty | Importați mai întâi înregistrările părinte sau verificați greșelile de tastare |
| **Nepotrivire de majuscule/minuscule** | `Acme.com` în fișier, dar `acme.com` în Twenty | Asigurați potrivirea exactă a majusculelor/minusculelor |
## Legarea la membrii spațiului de lucru
Când legați la membrii spațiului de lucru (echipa dvs.):
* Folosiți **adresa de email**, nu numele
* Exemplu: `owner@yourcompany.com`, nu "John Smith"
```csv
taskName,assignedTo
Follow up with client,john@yourcompany.com
Review proposal,jane@yourcompany.com
```
## Întrebări frecvente
<AccordionGroup>
<Accordion title="Ce se întâmplă dacă înregistrarea mea părinte nu are un domeniu sau un email?">
Aveți două opțiuni:
1. Folosiți `id`-ul Twenty (exportați înregistrările părinte pentru a obține ID-urile lor)
2. Creați un câmp unic personalizat în modelul dvs. de date pentru a stoca un ID extern din sistemul anterior
</Accordion>
<Accordion title="Pot să actualizez relațiile la înregistrările existente?">
Da! Includeți identificatorul unic al înregistrării copil (de ex., `email` pentru Persoane) și noua valoare a relației. Importul va actualiza relația.
</Accordion>
<Accordion title="Pot să import relații de tip mulți-la-mulți?">
Relațiile mulți-la-mulți nu sunt încă acceptate pentru import. Aceasta este planificată pentru S1 2026.
</Accordion>
<Accordion title="Pot să leg la mai multe tipuri de obiecte (cum ar fi Note la Persoane ȘI Companii)?">
Relațiile care indică către mai multe tipuri de obiecte nu sunt încă acceptate pentru import/export. Această funcționalitate este în planul nostru de dezvoltare.
</Accordion>
<Accordion title="Ce se întâmplă dacă o înregistrare părinte nu există?">
Importul va afișa o eroare pentru acel rând. Puteți fie să:
* Importați mai întâi înregistrarea părinte, apoi reimportați
* Corectați valoarea de referință
* Eliminați rândul din import
</Accordion>
<Accordion title="De ce relația mea nu se leagă corect?">
Cauze comune:
* Format greșit (folosiți `https://domain.com` pentru domenii)
* Nepotrivire de majuscule/minuscule (verificați ortografia exactă)
* Părintele nu există (importați mai întâi părinții)
* Maparea mai multor identificatori (folosiți doar unul)
</Accordion>
</AccordionGroup>
<Warning>
**Rețineți: Înregistrările șterse logic se iau în calcul pentru unicitate.**
Dacă primiți erori „not found”, dar înregistrarea pare să existe, verificați Command Menu → See deleted records. Este posibil ca părintele să fi fost șters logic.
</Warning>
## Depanare
Aveți probleme? Verificați:
* [Cum să remediați erorile de import](/l/ro/user-guide/data-migration/how-tos/fix-import-errors)
* [Capabilități de import al relațiilor](/l/ro/user-guide/data-migration/capabilities/import-relations)
* [Constrângeri de unicitate](/l/ro/user-guide/data-migration/capabilities/uniqueness-constraints)

View File

@@ -0,0 +1,289 @@
---
title: Migrarea de la alte CRM-uri
description: Ghid pas cu pas pentru migrarea datelor din orice CRM către Twenty.
---
## Prezentare generală
Acest ghid vă ghidează prin procesul de migrare a datelor din orice CRM către Twenty. Procesul implică auditarea datelor, pregătirea spațiului de lucru Twenty, exportul din sistemul curent și importul în Twenty.
<Note>Vizualizările, fluxurile de lucru și permisiunile trebuie recreate manual după migrare. Planificați timp pentru această muncă de configurare.</Note>
## Pasul 1: Auditați datele curente
Migrarea este o oportunitate pentru un nou început. Nu transferați date inutile.
**Ce să păstrați:**
* Contacte și companii active
* Oportunități și tranzacții deschise
* Note și activități importante
* Câmpuri personalizate pe care le utilizați efectiv
**Ce să lăsați în urmă:**
* Contacte învechite (fără activitate de peste 2 ani)
* Înregistrări duplicate
* Date de test
* Câmpuri personalizate neutilizate
## Pasul 2: Mapați modelul de date
Creați un document de mapare între CRM-ul curent și Twenty:
| CRM-ul dvs. | Twenty |
| ------------------------- | ------------------------ |
| Cont / Organizație | **Companie** |
| Contact / Persoană | **Persoane** |
| Tranzacție / Oportunitate | **Oportunitate** |
| Activitate | **Sarcină** sau **Notă** |
| Obiect personalizat | **Obiect personalizat** |
**Pentru fiecare câmp, documentați:**
* Numele câmpului sursă
* Câmpul țintă din Twenty
* Orice transformări de format necesare (date, numere de telefon etc.)
<Note>Păstrați acest document de mapare la îndemână în timpul importului — îl veți folosi când mapați coloanele.</Note>
## Pasul 3: Configurați spațiul dvs. de lucru Twenty
Înainte de a importa date, pregătiți spațiul dvs. de lucru Twenty:
### Creați obiecte și câmpuri personalizate
1. Accesați **Setări → Model de date**
2. Creați obiectele personalizate de care aveți nevoie
3. Adăugați câmpuri personalizate la obiectele standard și personalizate
4. Configurați setările câmpurilor (unic, obligatoriu, opțiuni de selectare etc.)
<Warning>
**Câmpurile trebuie să existe înainte de import.**
Importul CSV creează înregistrări, nu câmpuri. Creați toate câmpurile personalizate în Setări → Model de date înainte de import.
</Warning>
### Invitați-vă echipa
<Warning>
**Invitați utilizatorii ÎNAINTE de a importa datele.**
Dacă datele dvs. includ referințe la utilizatori (Proprietar cont, Atribuit etc.), acei utilizatori trebuie să existe în Twenty înainte de import. În caz contrar, acele relații nu pot fi mapate.
</Warning>
1. Mergi la **Setări → Membri**
2. Invitați toți membrii echipei
3. **Așteptați ca toți să accepte** invitațiile
4. Verificați că toți utilizatorii apar în lista de Membri
## Pasul 4: Exportați din CRM-ul dvs. actual
Exportați datele din CRM-ul dvs. actual:
1. Căutați o funcție **Export** (de obicei la Setări, Gestionare date sau Admin)
2. Exportați în **format CSV** când este posibil
3. Exportați fiecare tip de obiect separat (Companii, Contacte, Tranzacții/Oportunități etc.)
4. Includeți toate câmpurile pe care doriți să le migrați
**Exportați aceste obiecte (în această ordine, pentru referință):**
1. Companii / Conturi / Organizații
2. Contacte / Persoane
3. Tranzacții / Oportunități
4. Note și activități
5. Obiecte personalizate
## Pasul 5: Curățați și formatați datele
Deschideți fiecare CSV exportat într-o aplicație de calcul tabelar și pregătiți-l pentru Twenty.
### Eliminați duplicatele
1. Sortați după câmpul unic (e-mail pentru Persoane, domeniu pentru Companii)
2. Eliminați sau îmbinați rândurile duplicate
3. Verificați că nu există deja duplicate în Twenty
### Formatați corect câmpurile
| Tipul câmpului | Format necesar |
| ------------------------ | --------------------------------------------------- |
| **Domeniu** | `https://domain.com` |
| **Email** | `name@domain.com` (trebuie să fie unic) |
| **Dată** | `YYYY-MM-DD` |
| **Telefon** | Trei coloane: Număr, Codul țării, Prefix de apelare |
| **Boolean** | `TRUE` sau `FALSE` (majuscule) |
| **Câmpuri de selectare** | Folosiți numele API, nu etichetele de afișare |
<Warning>
**Formatul domeniului este critic.**
Folosiți `https://domain.com` (nu `domain.com` sau `www.domain.com`). Acest lucru corespunde formatului Twenty și previne duplicatele când conectați sincronizarea e-mailului/calendarului.
</Warning>
Consultați [Cum să vă pregătiți fișierele CSV](/l/ro/user-guide/data-migration/how-tos/prepare-your-csv-files) pentru cerințe complete de formatare pentru toate tipurile de câmpuri.
### Adăugați coloane de relație
Pentru a lega înregistrări (de ex., Persoane la Companii), adăugați o coloană cu identificatorul unic al părintelui.
**Exemplu: CSV Persoane cu legătură la Companie**
```csv
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
Consultați [Cum să importați relații](/l/ro/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) pentru instrucțiuni detaliate despre asocierea înregistrărilor.
### Actualizați referințele la utilizatori
Dacă datele dvs. includ atribuiri de utilizator (Proprietar, Atribuit):
1. Adăugați o coloană cu **e-mailul utilizatorului** (nu doar ID-ul lor din vechiul sistem)
2. Folosiți aceleași adrese de e-mail pe care utilizatorii le-au folosit pentru a se alătura spațiului dvs. de lucru Twenty
Consultați [Cum să vă pregătiți fișierele CSV](/l/ro/user-guide/data-migration/how-tos/prepare-your-csv-files) pentru ghidul complet de formatare.
## Pasul 6: Importați în Twenty
<Warning>
**Ordinea de import contează!**
Importați întotdeauna în această ordine:
1. **Companii** mai întâi (fără dependențe)
2. **Persoane** în al doilea rând (legate de Companii)
3. **Oportunități** în al treilea rând (legate de Companii/Persoane)
4. **Note și sarcini** (legate de înregistrări)
5. **Obiecte personalizate** respectând dependențele lor
Înregistrarea părinte trebuie să existe înainte de a o putea referi.
</Warning>
### Importați fiecare obiect
Pentru fiecare fișier CSV, în ordine:
1. Navigați la obiect în Twenty
2. Faceți clic pe **⋮ → Import records**
3. Încărcați fișierul CSV
4. Mapați coloanele la câmpuri:
* Mapați coloanele cu e-mailurile utilizatorilor la câmpurile de relație corespunzătoare
* Mapați coloanele de relație (precum `companyDomain`) la câmpurile de relație
5. Revizuiți și remediați eventualele erori în interfață
6. Confirmați importul
7. Verificați câteva înregistrări înainte de a trece la următorul fișier
**Ghiduri detaliate:**
* [Cum să importați companii](/l/ro/user-guide/data-migration/how-tos/import-companies-via-csv)
* [Cum să importați contacte](/l/ro/user-guide/data-migration/how-tos/import-contacts-via-csv)
* [Cum să importați relații](/l/ro/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
## Pasul 7: Migrații de volum mare (peste 50.000 de înregistrări)
Pentru migrațiile de volum mare:
| Volum | Abordare recomandată |
| ------------------------------- | ---------------------------------- |
| Sub 10.000 de înregistrări | Import CSV unic |
| 10.000 - 50.000 de înregistrări | Împărțiți în mai multe fișiere CSV |
| Peste 50.000 de înregistrări | Folosiți API-ul |
**Pentru importuri prin API:**
* Mai rapid și mai fiabil pentru seturi mari de date
* Suportă operațiuni în lot (până la 60 de înregistrări per apel)
* Consultați [Cum să importați date prin API](/l/ro/user-guide/data-migration/how-tos/import-data-via-api)
## Pasul 8: Configurare post-migrare
După importul datelor, finalizați configurarea spațiului de lucru:
### Recreați vizualizări
* Configurați vizualizări salvate cu filtre, sortări și configurații de coloane
* Creați orice vizualizări kanban sau calendar de care aveți nevoie
### Recrearea fluxurilor de lucru
* Recreați automatizările în **Setări → Fluxuri de lucru**
* Începeți cu cele mai critice fluxuri de lucru
* Testați fiecare înainte de a vă baza pe el
### Configurați roluri și permisiuni
* Configurați rolurile în **Setări → Membri → Roluri**
* Atribuiți utilizatorilor rolurile corespunzătoare
### Conectați e-mailul și calendarul
* Fiecare utilizator își conectează propriul cont în **Setări → Conturi**
* Twenty va începe să sincronizeze e-mailurile cu înregistrările de contact
* Consultați [E-mail și calendar](/l/ro/user-guide/calendar-emails/overview)
### Instruiți-vă echipa
* Parcurgeți împreună noua interfață
* Documentați orice procese specifice echipei
## Probleme comune și soluții
| Problemă | Cauză | Soluție |
| -------------------------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| **Erori de duplicate** | E-mail/domeniu există deja | Eliminați duplicatele din fișier sau includeți un identificator unic pentru a actualiza înregistrările existente |
| **Relația nu a fost găsită** | Înregistrarea părinte nu există | Importați mai întâi obiectele părinte (Companii înaintea Persoanelor) |
| **Câmpuri lipsă** | Câmpul personalizat nu există | Creați câmpul în Setări → Model de date înainte de import |
| **Erori la câmpuri de selectare** | Utilizarea etichetelor de afișare | Folosiți numele API (activați modul Avansat în Setări pentru a le găsi) |
| **Relația cu utilizatorul este goală** | Utilizatorul nu a acceptat invitația | Asigurați-vă că toți utilizatorii acceptă invitațiile înainte de a importa |
Consultați [Cum să remediați erorile de import](/l/ro/user-guide/data-migration/how-tos/fix-import-errors) pentru pași detaliați de depanare.
## Lista de Verificare Post-Migrare
### Integritatea datelor
<Check>Toate înregistrările sunt importate (comparați numărul cu cel din sistemul sursă)</Check>
<Check>Relațiile funcționează corect (Persoane legate de Companii)</Check>
<Check>Atribuirile de utilizator sunt mapate corect (Proprietar, Atribuit)</Check>
<Check>Câmpuri personalizate populate</Check>
<Check>Niciun duplicat neașteptat</Check>
### Configurație
<Check>Vizualizări recreate</Check>
<Check>Fluxuri de lucru recreate și testate</Check>
<Check>Roluri și permisiuni configurate</Check>
<Check>Sincronizarea e-mailului/calendarului conectată</Check>
### Pregătirea echipei
<Check>Echipa instruită pe noul sistem</Check>
<Check>Planul de acces la vechiul CRM stabilit (păstrat pentru referință? Când se dezactivează?)</Check>
## Întrebări frecvente
<AccordionGroup>
<Accordion title="Pot migra fluxurile de lucru automat?">
Momentan, nu. Fluxurile de lucru trebuie recreate manual în Twenty.
</Accordion>
<Accordion title="Cum rămâne cu atașamentele de fișiere?">
Atașamentele de fișiere nu sunt incluse în exporturile CSV. Va trebui să le reîncărcați manual, să le migrați prin API sau să contactați echipa noastră pentru asistență.
</Accordion>
<Accordion title="Pot păstra ambele sisteme în funcțiune în timpul migrării?">
Da, recomandăm să păstrați vechiul CRM în funcțiune până când ați verificat că migrarea este completă. Aveți grijă să nu creați date noi în ambele locuri.
</Accordion>
<Accordion title="Cât durează de obicei migrarea?">
Depinde de volumul și complexitatea datelor. Migrațiile mici (sub 10.000 de înregistrări) pot fi realizate în câteva ore. Migrațiile mari pot dura câteva zile, incluzând curățarea datelor și testarea.
</Accordion>
</AccordionGroup>
## Ai nevoie de ajutor?
<Tip>
Vrei ajutor cu migrarea? [Găsește un partener certificat de douăzeci de parteneri](https://twenty.com/partners/list?categories=SOLUTIONING\&ref=docs-migrate-crm) pentru a-ți muta datele, conductele și utilizatorii de la un capăt la altul.
</Tip>

View File

@@ -0,0 +1,173 @@
---
title: Migrarea de la Self-Hosted la Cloud
description: Ghid pas cu pas pentru migrarea instanței Twenty auto-găzduite la Twenty Cloud.
---
## Prezentare generală
Acest ghid vă ghidează prin migrarea datelor dvs. dintr-o instanță Twenty auto-găzduită către Twenty Cloud. Procesul presupune configurarea spațiului dvs. de lucru în cloud, exportarea datelor și reimportarea acestora.
<Note>Vizualizările, fluxurile de lucru și rolurile trebuie recreate manual după migrare. Planificați timp pentru această muncă de configurare.</Note>
## Pasul 1: Creați spațiul dvs. de lucru în cloud
1. Accesați [app.twenty.com](https://app.twenty.com) și creați un nou spațiu de lucru
2. Finalizați asistentul de configurare inițială
3. Notați URL-ul noului spațiu de lucru
## Pasul 2: Recreați modelul de date
Înainte de a importa datele, recreați obiectele și câmpurile personalizate:
1. Accesați **Setări → Model de date** în instanța dvs. din cloud
2. Creați obiecte personalizate care corespund configurației dvs. auto-găzduite
3. Adăugați câmpuri personalizate la obiectele standard și personalizate
4. Configurați setările câmpurilor (unic, obligatoriu etc.)
<Note>Faceți capturi de ecran ale modelului de date auto-găzduit pentru referință sau păstrați ambele instanțe deschise una lângă alta.</Note>
## Pasul 3: Invitați toți utilizatorii
<Warning>
**Important: Invitați utilizatorii ÎNAINTE de a importa datele.**
Utilizatorii trebuie să accepte invitațiile înainte de a importa orice înregistrări care îi referențiază (cum ar fi câmpurile Account Owner). Dacă utilizatorii nu există încă, acele relații nu pot fi mapate.
</Warning>
1. Accesați **Setări → Membri** în instanța dvs. din cloud
2. Invitați toți membrii echipei care aveau conturi pe instanța auto-găzduită
3. **Așteptați ca toți să accepte** invitațiile
4. Verificați că toți utilizatorii apar în lista de Membri
## Pasul 4: Exportați date din instanța auto-găzduită
Exportați fiecare obiect din instanța auto-găzduită:
1. Navigați la fiecare obiect (Companii, Persoane, Oportunități etc.)
2. Configurați vizualizarea pentru a afișa **toate coloanele** pe care doriți să le migrați
3. Faceți clic pe **⋮ → Export view**
4. Salvați fiecare fișier CSV cu un nume clar (de ex., `companies-export.csv`)
**Exportați în această ordine** (pentru referință la importare):
1. Companii
2. Persoane
3. Oportunități
4. Obiecte personalizate (urmând dependențele lor)
5. Sarcini, Note
## Pasul 5: Actualizați referințele la membrii spațiului de lucru
CSV-urile exportate conțin ID-uri de utilizator din instanța dvs. auto-găzduită. Aceste ID-uri nu vor corespunde cu instanța din cloud, deci trebuie să le înlocuiți cu adrese de e-mail.
**Pentru fiecare fișier CSV cu referințe la utilizatori (Owner, Assignee etc.):**
1. Deschideți fișierul CSV într-o aplicație de foi de calcul
2. Adăugați o coloană nouă lângă fiecare coloană cu ID de utilizator (de ex., `accountOwnerEmail` lângă `accountOwnerId`)
3. Completați **adresa de e-mail** a fiecărui utilizator
4. Puteți șterge coloana veche de ID sau o puteți lăsa (va fi omisă în timpul importului)
**Exemplu:**
Înainte:
```csv
name,domain,accountOwnerId
Acme Corp,https://acme.com,old-uuid-123
```
După:
```csv
name,domain,accountOwnerEmail
Acme Corp,https://acme.com,john@yourcompany.com
```
<Note>Folosiți aceleași adrese de e-mail pe care utilizatorii le-au folosit pentru a accepta invitația la spațiul de lucru din cloud.</Note>
## Pasul 6: Planificați ordinea de import
Importați fișierele în ordinea corectă pentru a păstra relațiile:
1. **Companii** mai întâi (fără dependențe)
2. **Persoane** în al doilea rând (legate de Companii)
3. **Oportunități** în al treilea rând (legate de Companii și Persoane)
4. **Obiecte personalizate** (urmând dependențele lor)
5. **Sarcini și Note** la final (legate de alte înregistrări)
Consultați [Cum să importați relații](/l/ro/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) pentru detalii despre menținerea relațiilor.
## Pasul 7: Importați în cloud
Pentru fiecare fișier CSV, în ordine:
1. Navigați la obiectul din instanța dvs. din cloud
2. Faceți clic pe **⋮ → Import records**
3. Încărcați fișierul CSV
4. Mapați coloanele la câmpuri:
* Mapați coloanele de e-mail ale utilizatorilor la câmpurile de relație corespunzătoare
* Mapați celelalte coloane ca de obicei
5. Revizuiți și remediați eventualele erori
6. Confirmați importul
7. Verificați câteva înregistrări înainte de a trece la următorul fișier
## Pasul 8: Recreați configurația
După importarea datelor, recreați manual:
### Vizualizări
* Recreați vizualizările salvate cu filtre, sortări și configurații de coloane
* Configurați orice vizualizări kanban sau calendar
### Fluxuri de lucru
* Recreați automatizările în **Setări → Fluxuri de lucru**
* Testați fiecare flux de lucru înainte de a vă baza pe el
### Roluri și permisiuni
* Configurați rolurile în **Setări → Membri → Roluri**
* Atribuiți utilizatorilor rolurile corespunzătoare
### Integrări
* Reconectați sincronizarea e-mailului și a calendarului pentru fiecare utilizator
* Reconfigurați orice integrări API cu chei API noi
## Lista de Verificare Post-Migrare
<Check>Toate datele importate cu succes</Check>
<Check>Relațiile dintre obiecte funcționează corect</Check>
<Check>Atribuirile utilizatorilor (Owner, Assignee) mapate corect</Check>
<Check>Vizualizări recreate</Check>
<Check>Fluxuri de lucru recreate și testate</Check>
<Check>Roluri și permisiuni configurate</Check>
<Check>Sincronizarea e-mailului/calendarului reconectată</Check>
<Check>Integrările API actualizate cu chei noi</Check>
## Întrebări frecvente
<AccordionGroup>
<Accordion title="Pot migra fluxurile de lucru automat?">
Momentan, nu. Fluxurile de lucru trebuie recreate manual în instanța dvs. din cloud.
</Accordion>
<Accordion title="Cum rămâne cu atașamentele de fișiere și imaginile?">
Atașamentele de fișiere nu sunt incluse în exporturile CSV. Va trebui să reîncărcați manual orice atașamente, să le migrați prin API sau să contactați echipa noastră pentru asistență la migrarea de volum mare.
</Accordion>
<Accordion title="Pot păstra ambele instanțe în funcțiune în timpul migrării?">
Da, recomandăm să păstrați instanța auto-găzduită în funcțiune până când ați verificat că migrarea în cloud este completă. Aveți doar grijă să nu creați date noi în ambele locuri.
</Accordion>
<Accordion title="Ce se întâmplă dacă un utilizator nu și-a acceptat încă invitația?">
Înregistrările care fac referire la acel utilizator nu se vor importa sau relația va fi goală. Asigurați-vă că toți utilizatorii acceptă invitațiile înainte de a importa datele.
</Accordion>
</AccordionGroup>
## Ai nevoie de ajutor?
<Tip>
Migrați un spațiu de lucru mare sau complex? [Găsiți un partener Twenty certificat](https://twenty.com/partners/list?categories=HOSTING\&ref=docs-migrate-cloud) care să gestioneze migrarea de la un capăt la altul. *(Sau implicați echipa noastră: [contact@twenty.com](mailto:contact@twenty.com).)*
</Tip>

View File

@@ -0,0 +1,267 @@
---
title: "Pregătiți fișierele CSV "
description: Ghid complet, pas cu pas, pentru a formata datele pentru import în Twenty.
---
## Prezentare generală
Acest ghid vă ghidează în pregătirea fișierului CSV pentru un import reușit. Urmați acești pași pentru a evita erorile.
## Pasul 1: Verificați cerințele fișierului
Înainte de a începe, asigurați-vă că fișierul îndeplinește aceste cerințe:
| Cerință | Detalii |
| ------------------------ | -------------------------------- |
| **Format** | CSV, XLSX sau XLS |
| **Limită de dimensiune** | 10.000 de înregistrări pe fișier |
| **Codificare** | UTF-8 recomandat |
| **Structură** | Un tip de obiect pe fișier |
<Note>Pentru seturi de date mai mari de 10.000 de înregistrări, împărțiți-le în mai multe fișiere sau folosiți [importul prin API](/l/ro/user-guide/data-migration/how-tos/import-data-via-api).</Note>
## Pasul 2: Descărcați fișierul de mostră
**Acesta este cel mai important pas.** Fișierul de mostră vă arată exact denumirile de coloane și formatul pe care îl așteaptă Twenty.
1. Accesați vizualizarea obiectului (Persoane, Companii etc.)
2. Faceți clic pe **⋮** → **Importați înregistrări**
3. Faceți clic pe **Descărcați fișierul de mostră**
4. Folosiți acest fișier ca șablon
<Note>**Sfat util:** Exportați în schimb câteva înregistrări existente. Acest lucru vă oferă exemple reale despre cum ar trebui să fie formatate datele, iar denumirile coloanelor se vor asocia automat în timpul importului.</Note>
## Pasul 3: Eliminați valorile duplicate
Twenty impune unicitatea pentru anumite câmpuri. Valorile duplicate vor provoca erori la import.
| Obiect | Câmpuri unice |
| ------------------------- | ------------------------------------------------------- |
| **Persoane** | `id`, `email` |
| **Companii** | `id`, `domain` |
| **Obiecte personalizate** | `id`, precum și orice câmp pe care l-ați marcat ca unic |
**Înainte de import:**
1. Sortați foaia de calcul după câmpul unic (email sau domeniu)
2. Eliminați sau îmbinați rândurile duplicate
3. Verificați duplicatele care există deja în Twenty
<Warning>**Înregistrările șterse temporar se iau în calcul pentru unicitate.** Înregistrările din Meniul Comenzi → Vezi înregistrările șterse vor provoca erori de duplicat. Ștergeți-le definitiv sau restaurați-le și actualizați-le.</Warning>
## Pasul 4: Formatați corect fiecare tip de câmp
Tipurile de câmpuri diferite necesită formate specifice. Iată referința completă:
### Câmpuri text
* Nu este necesară o formatare specială
* Spațiile de la început/sfârșit sunt eliminate automat
### Câmpuri e-mail
* Trebuie să fie într-un format de e-mail valid: `name@domain.com`
* Trebuie să fie unic (fără duplicate în fișier sau în Twenty)
* Pentru adresele e-mail suplimentare, folosiți acest format în coloana **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### Câmpuri domeniu
* **Format recomandat**: `https://domain.com`
* Acesta corespunde formatului folosit de sincronizarea căsuței poștale/calendarului (previne duplicatele)
* Completați ambele coloane:
* **Domain / Domain Label**: `domain.com`
* **Domain / Domain URL**: `https://domain.com`
* Trebuie să fie unic în fișierul dvs. și în Twenty
### Câmpuri telefon
Telefonul este un **câmp îmbricat** care necesită mai multe coloane:
| Coloană | Exemplu |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### Câmpuri adresă
Adresa este un **câmp îmbricat** cu mai multe coloane (unele pot fi lăsate necompletate):
* **Adresă / Adresă 1**: Linia 1 a adresei stradale
* **Adresă / Adresă 2**: Linia 2 a adresei stradale (opțional)
* **Adresă / Oraș**: Numele orașului
* **Adresă / Stat**: Stat sau provincie
* **Adresă / Țară**: Numele țării
* **Adresă / Cod poștal**: Cod poștal/ZIP
### Câmpuri de dată
Folosiți un format consecvent în tot fișierul:
* `YYYY-MM-DD` (recomandat): `2024-03-15`
* ISO 8601: `2024-03-15T10:30:00Z`
### Câmpuri numerice
* Doar numere (fără text)
* Folosiți punctul pentru zecimale: `1234.56`
* Fără separatori pentru mii (nu `1,234.56`)
### Câmpuri de monedă
Moneda este un **câmp îmbricat** care necesită două coloane ce **trebuie ambele completate**:
| Coloană | Exemplu |
| ----------------- | --------- |
| **Sumă / Sumă** | `1234.56` |
| **Sumă / Monedă** | `USD` |
### Câmpuri booleene
Folosiți majuscule: `TRUE` sau `FALSE`
<Warning>`true` sau `false` cu litere mici nu vor funcționa.</Warning>
### Câmpuri de selectare
Folosiți **numele API** al opțiunii, nu eticheta de afișare.
**Cum găsiți numele API:**
1. Accesați **Setări → Model de date**
2. Selectați obiectul și câmpul
3. Activați **Modul avansat** (comutator în dreapta jos)
4. Copiați numele API (de ex., `OPTION_1`, nu "Option 1")
<Note>Opțiunile noi de selectare nu sunt create automat. Adăugați-le în **Setări → Model de date** înainte de import.</Note>
### Câmpuri cu selecție multiplă
Folosiți numele API în format de array:
```
["VALUE1","VALUE2"]
```
### Câmpuri de tip array
Folosiți formatul JSON de tip array:
```
["value1","value2"]
```
### Câmpuri de rating
Folosiți formatul: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4` sau `RATING_5`
### Câmpuri pentru linkuri/URL
Completați ambele coloane:
* **Linkuri / Etichetă link**: `Twenty`
* **Linkuri / URL link**: `https://twenty.com`
Pentru linkurile secundare, folosiți coloana **Linkuri / Linkuri secundare**:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
### Câmpuri JSON
Folosiți un format JSON valid:
```
{"key":"value","key2":"value2"}
```
### Câmpuri ID
* **Opțional**: Twenty generează automat ID-uri dacă nu sunt furnizate
* **Format**: UUID (de ex., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
* **Caz de utilizare**: Includeți ID-ul pentru a actualiza înregistrările existente în loc să creați altele noi
## Pasul 5: Adăugați coloane de relație (dacă legați înregistrări)
Pentru a lega înregistrări de alte obiecte (de ex., Persoane la Companii), adăugați o coloană cu identificatorul unic al înregistrării asociate.
**Exemplu**: Legarea Persoanelor la Companii
Adăugați o coloană în CSV-ul Persoane:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**Reguli importante pentru relații:**
* Înregistrarea părinte trebuie să existe deja în Twenty
* Folosiți formatul **URL de domeniu** (`https://domain.com`), nu eticheta
* Mapați doar UN identificator unic (nu includeți atât `companyId` cât și `companyDomain`)
* Pentru membrii spațiului de lucru, folosiți **emailul** (nu numele)
<Warning>
**Ordinea de import contează!**
Importați partea "unu" înaintea părții "mulți":
1. **Companii** mai întâi
2. **Persoane** în al doilea rând (cu referință la companie)
3. **Oportunități** în al treilea rând
Înregistrarea părinte trebuie să existe înainte de a o putea referi.
</Warning>
Consultați [Cum să importați relații](/l/ro/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) pentru instrucțiuni detaliate.
## Pasul 6: Asigurați-vă că câmpurile există în Twenty
Importul creează **înregistrări**, nu **câmpuri**. Toate câmpurile pe care doriți să le importați trebuie să existe deja în modelul de date.
**Înainte de import:**
1. Accesați **Setări → Model de date**
2. Selectați obiectul
3. Creați câmpurile personalizate de care aveți nevoie
4. Notați denumirile exacte ale câmpurilor (trebuie să se potrivească antetelor coloanelor)
## Pasul 7: Lista finală de verificare
Înainte de a încărca fișierul, verificați:
<Check>Fișierul este în format CSV, XLSX sau XLS</Check>
<Check>Fișierul are mai puțin de 10.000 de înregistrări</Check>
<Check>Codarea este UTF-8</Check>
<Check>Fără emailuri duplicate (pentru Persoane) sau domenii (pentru Companii)</Check>
<Check>Datele folosesc un format consecvent peste tot</Check>
<Check>Domeniile folosesc formatul `https://domain.com`</Check>
<Check>Câmpurile booleene folosesc `TRUE` sau `FALSE` (majuscule)</Check>
<Check>Câmpurile de selectare folosesc nume API, nu etichete de afișare</Check>
<Check>Toate câmpurile personalizate există în Setări → Model de date</Check>
<Check>Înregistrările părinte importate înaintea înregistrărilor copil</Check>
<Check>Coloanele de relație fac referire la înregistrări existente</Check>
## Greșeli comune de evitat
| Greșeală | Soluție |
| -------------------------------------------------------------- | ------------------------------------------------- |
| Folosirea lui `true` în loc de `TRUE` | Valorile booleene trebuie să fie cu majuscule |
| Folosirea etichetelor de afișare pentru câmpurile de selectare | Găsiți și folosiți numele API în Setări |
| Importarea Persoanelor înaintea Companiilor | Importați întotdeauna mai întâi obiectele părinte |
| Lipsește codul monedei pentru câmpurile de monedă | Completați ambele coloane, Sumă și Monedă |
| Format de domeniu greșit | Folosiți `https://domain.com` în mod consecvent |
| Maparea mai multor câmpuri unice pentru relații | Mapați doar UNUL (domeniu SAU id, nu ambele) |
## Pașii următori
Fișierul este gata! Acum:
* [Importați companii](/l/ro/user-guide/data-migration/how-tos/import-companies-via-csv) (importați-le pe acestea mai întâi)
* [Importați contacte](/l/ro/user-guide/data-migration/how-tos/import-contacts-via-csv)
* [Remediați eventualele erori de import](/l/ro/user-guide/data-migration/how-tos/fix-import-errors)

View File

@@ -0,0 +1,198 @@
---
title: Actualizați înregistrările existente prin import
description: Ghid complet, pas cu pas, pentru actualizarea în masă a înregistrărilor folosind importul CSV.
---
## Prezentare generală
Trebuie să actualizați multe înregistrări deodată? În loc să le editați una câte una, folosiți importul CSV pentru a actualiza în masă înregistrările existente.
**Cazuri de utilizare:**
* Actualizați titlurile de post pentru mai multe persoane
* Modificați în masă informațiile companiilor
* Adăugați date în câmpuri personalizate noi
* Corectați erorile de date din multe înregistrări
## Cum Funcționează
Când importați un fișier care conține un **identificator unic** ce se potrivește unei înregistrări existente, Twenty actualizează acea înregistrare în loc să creeze un duplicat.
| Dacă identificatorul unic... | Twenty va... |
| ----------------------------------------- | ------------------------------------------------------- |
| Se potrivește cu o înregistrare existentă | **Actualizează** înregistrarea existentă |
| Nu se potrivește cu nicio înregistrare | **Creează** o înregistrare nouă |
| Lipsește din fișierul dvs. | **Creează** o înregistrare nouă (cu ID generat automat) |
<Warning>
**Câmpurile Multi-Select sunt suprascrise, nu îmbinate.**
Dacă o înregistrare are selectate `Option A` și `Option B`, iar importați `["Option C"]`, înregistrarea va avea doar `Option C` după import. Importul înlocuiește toate selecțiile anterioare — nu le adaugă.
Pentru a păstra valorile existente, includeți-le pe toate în import: ["Option A","Option B","Option C"]
</Warning>
## Pasul 1: Exportați datele curente
Mai întâi, exportați înregistrările pe care doriți să le actualizați:
1. Navigați la obiect (Persoane, Companii etc.)
2. **Adăugați coloanele de care aveți nevoie** — faceți clic pe **Options → Fields** pentru a afișa câmpurile pe care doriți să le actualizați
3. **Filtrați dacă este nevoie** — restrângeți la înregistrările pe care doriți să le actualizați
4. Faceți clic pe **⋮** → **Export view**
5. Salvați fișierul CSV
<Note>**De ce să exportați mai întâi?** Fișierul exportat are formatul corect, include identificatori unici și se mapează automat în timpul importului.</Note>
### Ce se exportă
* Toate coloanele vizibile din vizualizarea curentă
* Identificatorii unici ai înregistrării (`id`, `email`, `domain`)
* Valorile actuale ale câmpurilor pe care le puteți modifica
## Pasul 2: Editați fișierul CSV
Deschideți fișierul exportat în aplicația dvs. de calcul tabelar (Excel, Google Sheets etc.):
1. **Păstrați coloana cu identificatorul unic** — nu ștergeți `id`, `email` sau `domain`
2. **Actualizați valorile** în coloanele pe care doriți să le modificați
3. **Eliminați coloanele pe care nu trebuie să le actualizați** (opțional, dar mai ordonat)
4. **Nu modificați valorile identificatorului unic** — altfel Twenty va crea înregistrări noi
### Exemplu: Actualizarea titlurilor de post
**Fișier exportat:**
```csv
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,john@acme.com,John,Smith,Sales Rep
550e8400-e29b-41d4-a716-446655440002,jane@acme.com,Jane,Doe,Sales Rep
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Sales Rep
```
**După modificările dvs.:**
```csv
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,john@acme.com,John,Smith,Account Executive
550e8400-e29b-41d4-a716-446655440002,jane@acme.com,Jane,Doe,Senior Account Executive
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Account Executive
```
<Warning>
**Nu modificați valorile identificatorului unic.**
Dacă modificați `john@acme.com` în `john.smith@acme.com`, Twenty va crea o înregistrare nouă în loc să o actualizeze pe cea existentă.
</Warning>
## Pasul 3: Importați fișierul actualizat
1. Navigați la obiect
2. Faceți clic pe **⋮** → **Import records**
3. Încărcați fișierul CSV editat
4. **Asigurați-vă că identificatorul unic este mapat** — verificați că `email`, `domain` sau `id` este mapat corect
5. Revizuiți mapările câmpurilor
6. Verificați erorile
7. Faceți clic pe **Confirm**
Twenty potrivește înregistrările după identificatorul unic și le actualizează cu valorile noi.
## Alegerea identificatorului unic potrivit
| Obiect | Recomandat | Alternativă | Notițe |
| ------------------------- | --------------- | ----------- | --------------------------------- |
| **Persoane** | `email` | `id` | Emailul este ușor de citit |
| **Companii** | `domeniu` | `id` | Domeniul este ușor de citit |
| **Obiecte personalizate** | Orice câmp unic | `id` | Folosiți câmpul unic personalizat |
<Note>**Folosiți un singur identificator unic.** Nu mapați atât `email`, cât și `id`. Acest lucru poate provoca confuzii și erori.</Note>
### Utilizarea câmpurilor unice personalizate
Dacă aveți un câmp personalizat marcat ca unic (cum ar fi un ID extern dintr-un alt sistem):
1. Includeți acel câmp în export și import
2. Mapați-l în timpul importului
3. Twenty va face potrivirea pe baza acelui câmp
## Pasul 4: Verificați actualizările
După import:
1. Deschideți câteva înregistrări actualizate
2. Verificați că modificările au fost aplicate
3. Verificați că nu au fost create înregistrări duplicate
## Ce se întâmplă cu câmpurile care nu sunt în fișierul dvs.?
**Câmpurile care nu sunt incluse în fișierul de import rămân neschimbate.**
| Fișierul dvs. include... | Rezultat |
| ---------------------------- | --------------------------------------------------------------- |
| `email`, `jobTitle` | Doar `jobTitle` este actualizat; celelalte câmpuri rămân la fel |
| `email`, `jobTitle`, `phone` | `jobTitle` și `phone` sunt actualizate |
Asta înseamnă că trebuie să includeți doar câmpurile pe care doriți să le modificați (plus identificatorul unic).
## Combinarea actualizărilor și a înregistrărilor noi
Puteți actualiza înregistrările existente ȘI crea unele noi în același import:
```csv
email,firstName,lastName,jobTitle
john@acme.com,John,Smith,Senior Manager ← Updates existing (email matches)
newperson@acme.com,New,Person,Analyst ← Creates new (email doesn't match)
```
## Greșeli comune de evitat
| Greșeală | Problemă | Rezultat | Soluție |
| -------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------- | ---------------------------------------------------- |
| **Schimbarea identificatorului unic** | S-a schimbat `john@acme.com` în `john.smith@acme.com` | Creează o înregistrare nouă în loc să actualizeze | Păstrați identificatorii unici neschimbați |
| **Câmpuri unice multiple** | Maparea atât a `email`, cât și a `id` | Conflicte potențiale de potrivire | Mapați un singur identificator unic |
| **Fără identificator unic** | Fișierul conține doar `firstName`, `lastName`, `jobTitle` | Toate rândurile creează înregistrări noi | Includeți întotdeauna `email`, `domain` sau `id` |
| **Nepotrivire de majuscule/minuscule** | Fișierul are `John@acme.com`, dar Twenty are `john@acme.com` | Creează o înregistrare nouă | Exportați din Twenty pentru a obține valorile exacte |
## Întrebări frecvente
<AccordionGroup>
<Accordion title="Ce se întâmplă dacă unele înregistrări nu există încă?">
Înregistrările cu identificatori unici care nu se potrivesc cu înregistrările existente vor fi create ca înregistrări noi. Acest lucru vă permite să actualizați și să creați în cadrul aceluiași import.
</Accordion>
<Accordion title="Pot goli o valoare de câmp?">
Da, lăsați celula goală în CSV. Importul va goli valoarea acelui câmp în înregistrarea existentă.
</Accordion>
<Accordion title="Ce se întâmplă cu câmpurile pe care nu le includ în import?">
Câmpurile care nu se află în fișierul de import rămân neschimbate în înregistrările existente. Sunt actualizate doar câmpurile pe care le includeți.
</Accordion>
<Accordion title="Pot actualiza câmpurile de relație (cum ar fi Compania)?">
Da! Includeți identificatorul unic al relației (de ex., `companyDomain`) și mapați-l la câmpul de relație. Relația va fi actualizată.
</Accordion>
<Accordion title="Cum știu care înregistrări vor fi actualizate și care vor fi create?">
În etapa de revizuire a importului, Twenty vă arată câte înregistrări vor fi actualizate și câte vor fi create, pe baza potrivirilor după identificatorul unic.
</Accordion>
<Accordion title="Pot anula o actualizare în masă?">
Nu există o anulare automată. Recomandăm să exportați datele ca o copie de siguranță înainte de a efectua actualizări în masă.
</Accordion>
</AccordionGroup>
## Cele mai bune practici
1. **Exportați mai întâi** — începeți întotdeauna de la un export pentru a vă asigura de formatul corect
2. **Faceți o copie de siguranță înainte de actualizare** — exportați-vă datele înainte de a face modificări în masă
3. **Testați cu câteva înregistrări** — încercați să actualizați mai întâi 5–10 înregistrări înainte de a face un lot mare
4. **Folosiți identificatori ușor de citit** — `email` și `domain` sunt mai ușor de verificat decât `id`
5. **Includeți doar coloanele necesare** — mai puține coloane înseamnă mai puține șanse de erori
## Depanare
Aveți probleme? Verificați:
* [Cum să remediați erorile de import](/l/ro/user-guide/data-migration/how-tos/fix-import-errors)
* [Constrângeri de unicitate](/l/ro/user-guide/data-migration/capabilities/uniqueness-constraints)
* [Referință pentru maparea câmpurilor](/l/ro/user-guide/data-migration/capabilities/field-mapping)

View File

@@ -0,0 +1,83 @@
---
title: Migrarea datelor
description: Importați și exportați datele CRM prin fișiere CSV sau API.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Metode de import
Twenty acceptă două metode principale de importare a datelor:
| Metodă | Recomandat pentru | Limită de volum |
| ------------------- | --------------------------------------- | -------------------------------- |
| **Import CSV** | Migrații standard, actualizări regulate | 10.000 de înregistrări pe fișier |
| **Import prin API** | Migrații la scară mare, automatizare | Nelimitat |
<Note>Pentru seturi de date foarte mari (sute de mii de înregistrări), utilizați API-ul. Partenerii noștri de [implementare](/l/ro/user-guide/getting-started/capabilities/implementation-services) vă pot ajuta să rulați aceste scripturi, dacă este nevoie.</Note>
## Noțiuni de bază despre importul CSV
Puteți importa date pentru orice obiect folosind fișiere CSV, XLSX sau XLS. Fiecare fișier ar trebui să conțină **doar un singur tip de obiect** (de exemplu, doar înregistrări ale Persoanelor).
<Note>**Câmpurile trebuie să existe înainte de import.** Încărcarea unui fișier CSV creează înregistrări, dar nu creează câmpuri. Dacă aveți nevoie de câmpuri personalizate, creați-le mai întâi în **Settings → Data Model**.</Note>
### Pași
1. Navigați la obiectul în care doriți să importați date
2. Faceți clic pe pictograma **⋮** din dreapta sus (acesta este Command Menu) și faceți clic pe **Import records**
3. Descărcați fișierul-șablon pentru a vă asigura că datele sunt în formatul așteptat
4. Încărcați fișierul CSV formatat
5. Mapați coloanele la câmpurile din Twenty
6. Revizuiți erorile (evidențiate cu galben) și corectați-le, editând direct în interfața utilizator
7. Confirmați importul
### Importă relații între obiecte
Puteți importa relații între obiecte folosind funcția de import CSV. Trebuie să faceți referire la obiectul înrudit folosind un câmp unic al acestuia: `id`, `email` pentru Persoane și membri ai spațiului de lucru, `domain` pentru companii, orice alt câmp setat ca unic în modelul de date pentru orice alt obiect.
<Note>**Înregistrările șterse contează pentru unicitate.** Înregistrările șterse soft (vizibile în Command Menu → See deleted records) sunt incluse în verificările de unicitate. Dacă importați o înregistrare cu aceeași valoare unică ca o înregistrare ștearsă, înregistrarea ștearsă va fi restaurată.</Note>
<Warning>
**Ordinea importului contează!**
Când importați obiecte înrudite, încărcați fișierele în această ordine:
1. **Companiile** mai întâi (partea "one" a relațiilor)
2. **Persoane** al doilea (legat de companii prin intermediul Id)
3. **Oportunități** în al treilea rând (legate de Companii/Persoane)
4. **Obiectele personalizate** cu relații, la final
De ce? Partea "one" a unei relații unul-la-mulți trebuie să existe înainte de a o putea referi. De exemplu, înregistrarea Companiei trebuie să existe înainte de a importa o Persoană cu ID-ul acelei companii.
</Warning>
Consultați [acest articol](/l/ro/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) pentru un ghid pas cu pas despre cum să procedați.
## Exportați Date
Exportați datele spațiului de lucru pentru copii de siguranță, raportare sau migrare.
### Pași
1. Navigați la obiectul pe care doriți să-l exportați
2. Configurați vizualizarea cu coloanele de care aveți nevoie
3. Faceți clic pe **⋮** → **Export view**
4. Salvați fișierul CSV
<Note>**Se exportă doar coloanele vizibile.** Fișierul CSV va conține doar coloanele afișate în vizualizarea curentă. Adăugați sau ascundeți coloane înainte de export pentru a controla ce date sunt incluse.</Note>
<Note>**Limite de export**: Până la 20.000 de înregistrări pe export.</Note>
## Permisiuni
Importul și exportul de date necesită permisiuni specifice:
* **Import**: Necesită permisiunea "Import CSV"
* **Export**: Necesită permisiunea "Export CSV"
Contactați administratorul spațiului de lucru dacă nu aveți aceste permisiuni.
## Pașii următori
* [Pregătiți fișierele CSV](/l/ro/user-guide/data-migration/how-tos/prepare-your-csv-files)
* [Importați relații între obiecte](/l/ro/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [Importați prin API pentru seturi mari de date](/l/ro/user-guide/data-migration/how-tos/import-data-via-api)