Salt la conținutul principal
Twenty nu oferă încă suport nativ pentru câmpuri de formulă (va veni în 2026), dar poți obține același rezultat folosind fluxuri de lucru. Această soluție temporară îți permite să calculezi și să completezi automat valorile câmpurilor — de la concatenări simple la logică de business complexă.

Cazuri de Utilizare Comune

Caz de utilizareExemplu de formulă
Nume completPrenume + ” ” + Nume
Sumă estimatăSumă × Probabilitate
Zile până la scadențăData scadenței - Astăzi
Zile în stadiuAstăzi - Data intrării în stadiu
Scor leadPuncte bazate pe criterii multiple
Pentru un exemplu complet de urmărire a timpului în stadiile din pipeline, vezi Urmărește cât timp rămân oportunitățile în fiecare stadiu.

Formulă de bază: Concatenare

Exemplu: Autocompletare nume complet

Obiectiv: Combină automat prenumele și numele într-un câmp de nume complet.

Configurare

  1. Declanșator: Înregistrarea este actualizată sau creată (Persoane)
  2. Filtru: Verifică dacă prenumele sau numele s-a schimbat
  3. Acțiune de cod:
export const main = async (params) => {
  const { firstName, lastName } = params;

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

  return { fullName };
};
  1. Actualizează înregistrarea: Setează Nume complet la {{code.fullName}}

Formulă numerică: Sumă estimată

Exemplu: Calculează venitul estimat

Obiectiv: Înmulțește suma oportunității cu probabilitatea pentru a obține suma estimată. Vezi Cum să afișezi suma estimată în pipeline pentru fluxul de lucru complet.

Configurare rapidă

  1. Declanșator: Înregistrarea este actualizată (Oportunități, câmpul Sumă SAU Probabilitate)
  2. Acțiune de cod:
export const main = async (params) => {
  const { amount, probability } = params;

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

  return { expectedAmount };
};
  1. Actualizează înregistrarea: Setează Suma estimată la {{code.expectedAmount}}

Formulă de dată: Calculul zilelor

Exemplu: Zile până la scadența sarcinii

Obiectiv: Calculează câte zile rămân până la data scadenței unei sarcini.

Configurare

  1. Declanșator: Înregistrarea este actualizată sau creată (Sarcini, câmp Data scadenței)
  2. Acțiune de cod:
export const main = async (params) => {
  const { dueDate } = params;

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

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

  return { daysUntilDue: diffDays };
};
  1. Actualizează înregistrarea: Setează Zile până la scadență la {{code.daysUntilDue}}
Valorile negative indică sarcini întârziate. Poți folosi acest câmp pentru a filtra sau sorta sarcinile după urgență.

Formulă condițională: Scor lead

Exemplu: Calculează scorul lead pe baza criteriilor

Obiectiv: Punctează lead-urile pe baza dimensiunii companiei, industriei și nivelului de implicare.

Configurare

  1. Declanșator: Înregistrarea este actualizată (Persoane sau Companii)
  2. Acțiune de cod:
export const main = async (params) => {
  const { companySize, industry, hasEmail, hasPhone, source } = params;

  let score = 0;

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

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

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

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

  return { leadScore: score };
};
  1. Actualizează înregistrarea: Setează Scor lead la {{code.leadScore}}

Formulă de text: Extracția domeniului

Exemplu: Extrage domeniul din e-mail

Obiectiv: Extrage și stochează automat domeniul e-mailului.

Configurare

  1. Declanșator: Înregistrarea este actualizată (Persoane, câmp E-mail)
  2. Acțiune de cod:
export const main = async (params) => {
  const { email } = params;

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

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

  return { domain };
};
  1. Actualizează înregistrarea: Setează câmpul Domeniu la {{code.domain}}

Cele mai bune practici

Performanță

  • Declanșează doar la modificări relevante ale câmpurilor
  • Folosește filtre pentru a omite înregistrările care nu necesită calcul
  • Evită calcule complexe în fluxurile de lucru cu volum mare

Gestionarea erorilor

  • Verifică valorile null/undefined înainte de calcule
  • Folosește valori implicite când lipsesc datele
  • Returnează mesaje de eroare clare când calculele eșuează

Testare

  • Testează cu cazuri-limită (câmpuri goale, valori zero)
  • Verifică manual calculele înainte de activare
  • Monitorizează rulările fluxurilor de lucru pentru rezultate neașteptate

Conexe