Exemplu Dataverse plugin-uri cu cod redus (versiune preliminară)

[Acest subiect este documentație de prelansare și poate suferi modificări.]

Scopul acestor exemple de plug-in-uri este să vă ajute să începeți prin integrarea acestora în aplicațiile dvs. Veți înțelege că experiența de creație include crearea de Microsoft Dataverse API-uri personalizate susținute de Power Fx expresii, care pot declanșa acțiuni interne sau externe Dataverse.

Important

  • Aceasta este o caracteristică de previzualizare.
  • Caracteristicile în regim de previzualizare nu sunt destinate utilizării în producție și pot avea funcționalitate restricționată. Aceste caracteristici sunt disponibile înainte de lansarea oficială, astfel încât clienții să poată obține acces din timp și să poată oferi feedback.

Cerințe preliminare

Pentru a utiliza unul dintre exemplele de plug-in-uri pentru evenimentul de date, aplicația Dataverse accelerator trebuie să fie instalată în mediu. Mai multe informații: Condiții preliminare pentru crearea unui plugin cu cod redus

Notă

Șabloanele de e-mail sunt disponibile numai pentru anumite tabele. Mai multe informații: Creați șabloane pentru e-mail

Returnează o valoare nenegativă

Acest exemplu utilizează funcția Abs() pentru a returna valoarea nenegativă a argumentului său. Dacă un număr este negativ, Abs returnează echivalentul pozitiv.

  1. Redați Dataverse aplicația Accelerator, pe bara de comandă selectați Acțiune nouă > Plugin instant.

  2. Furnizați un nume afișat, cum ar fi numele formulei și descrierea.

  3. Creați un Out parametru pentru a valida comportamentul așteptat care are sens, cum ar fi un șir Opțional, utilizați parametrii de intrare pentru a ușura testarea, ceea ce are sens cu formula.

  4. În editorul de formule, Încapsulare Out parametrul dintre paranteze:

    {Out: "" }
    
  5. Introduceți o expresie care testează formula:

    • Validați că intellisense acceptă formula (textul devine albastru deschis).
    • Implementați o expresie care oferă o ieșire pentru a ajuta la validarea rezultatului, de exemplu.
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. Selectați Înainte, apoi selectați Salvați.

  7. Selectați Test pentru a testa formula. Utilizați parametrul de ieșire pentru a valida rezultatul.

Validarea intrărilor și erori personalizate

Detectarea duplicatelor

Implementați validarea intrărilor pe partea de server, cum ar fi detectarea erorilor duplicate care aruncă un mesaj de eroare personalizat.

  1. Redați Dataverse aplicația Accelerator, pe bara de comandă selectați Acțiune nouă > Plugin automatizat.
  2. În caseta Nume, introduceți Verificare dublură.
  3. Pentru Tabel, selectați Contact.
  4. Pentru Rulați acest plugin când rândul este, selectați Creat.
  5. În caseta Formulă, introduceți această formulă:
 If( !IsBlank(LookUp([@Contacts],'Last Name'=ThisRecord.'Last Name' && 'First Name'=ThisRecord.'First Name')),
    Error("You have existing contacts with the same first name and last name")
)
  1. Selectați Salvați.

Testați plug-in-ul

  1. Pentru a testa pluginul, creați un aplicație creată pe planșă folosind tabelul de contacte urmând pașii de aici: Specificați un tabel
  2. Creați un rând de contact.
  3. Creați un alt contact cu același nume ca în pas precedent.
  4. Este afișat un mesaj care indică înregistrările duplicate găsite. Selectați Ignorați și salvați în promptul mesaj de eroare.

Este afișat acest mesaj de eroare personalizat: Aveți două persoane de contact cu aceeași prima și nume de familie.

Validarea datelor

Afișați anumite tipuri de erori utilizând enumerarea ErrorKind .

  1. Creați un nou plug-in automat.

  2. Furnizați următoarele valori:

    • Nume: Validare de intrare
    • Descriere: Verifică data validă și afișează o eroare dacă nu este validă
    • Tabel: Numire
    • Rulați acest plugin când rândul este: Actualizat
  3. Introduceți formula de mai jos:

    If(ThisRecord.'Due Date' < Now(), 
     Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" })
    );
    
  4. Sub Opțiuni avansate, setați Când ar trebui să ruleze la Pre-operare; doriți să executați această regulă înainte ca datele să fie salvate pentru a preveni datele nevalide.

  5. Selectați Salvați.

Accesați funcția Error() pentru a afla mai multe despre erorile personalizate.

Trimiteți e-mail pe baza unui eveniment de date

Cerințe preliminare:

Exemplu de șablon de e-mail

Iată un exemplu de șablon de e-mail pe care îl puteți crea pentru evenimentul de date bazat pe SenMail:

  • Tip șablon: Global
  • Nume: Comandă Vă mulțumim
  • Descriere: Utilizați acest șablon pentru a mulțumi unui client pentru că a plasat o comandă cu dvs.
  • Subiect: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • Corp: utilizați acest cod.
   Hello {!Sales Order:First Name;},
   Order Type: {! Sales Order: Order Type;},
   Location Type: {! Sales Order: Location Type;},
   Address1: {! Sales Order: Address 1;},
   Address2: {! Sales Order: Address 2;},
   Preferred Service Start Date 1: {! Sales Order: Preferred Service Start Date;},
   Next Step- We take upto 48 hrs to schedule an in-person and will notify you as soon as we have a In-person Technician allocated at your site. For any questions, please contact us at 1-800-CON-SOLAR
   Yours Sincerely, 
   Contoso Sales 

Creați plug-in-ul automat

  1. Redați Dataverse aplicația Accelerator, apoi selectați +Plugin nou sub Pluginuri automate.
  2. Introduceţi informaţiile următoare:
    • Nume: SendEmailUponCreate

    • Tabel: selectați numele tabelului logic al comenzilor de vânzare, care este Comandă de vânzări. Acest eveniment se bazează pe tabelul comenzi de vânzări.

    • Rulați acest plugin cu rândul este: Creat

    • Formula: inserați codul de mai jos în caseta Formulă . Pentru mai multe informații despre funcția SendEmailFromTemplate, la SendEmailFromTemplate Action.

      XSendEmailFromTemplate(
          LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template',
      ThisRecord,
      LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email]
      )
      
  3. Selectați Avansat > Postă operare.
  4. Selectați Salvați.

Apare mesajul de confirmare Plugin-ul a fost salvat cu succes .

Trimiteți notificări în aplicație pe baza unei acțiuni instantanee

Notificările în aplicație le permit producătorilor să configureze notificări contextuale și acționabile pentru utilizatorii din aplicațiile bazate pe model.

Creați pluginul cu cod redus care trimite o notificare în aplicație

  1. Redați Dataverse aplicația accelerator, apoi selectați +Plugin nou sub Pluginuri instantanee.
  2. Introduceți următoarele informații, selectați Următorul:
    • Nume: NotifyTechnican1
    • Descriere: Acest plug-in instant notifică utilizatorul aplicației.
  3. Pe pagina Definiții creați parametrii de intrare cu aceste tipuri de date:
    • OrderID: Șir
    • TechnicianEmail: Șir
  4. Formula. Lipiți următorul cod în caseta Formulă . Pentru mai multe informații despre această funcție, accesați SendAppNotification Action.
     XSendAppNotification(
         "New service",
         LookUp(Users,'Primary Email'=TechnicianEmail),
         "You have a new solar panel installation scheduled on "& LookUp('Scheduling Results','OrderId'=OrderID).'ServiceDate'&" in "& LookUp('Service Orders','Order Number'=OrderID).City &". Contact the coordinator with any questions.",
     [
         XCreateSidePaneActionForEntity(
                 "View order",
             OrderID,
             "Sales Order",
             "cr8b8_serviceorder1",
             LookUp('Service Orders','Order Number'=OrderID).'Service Order'
             )
         ]
     )
    
  5. Selectați Următorul.
  6. Pe pagina Rezumat, selectați Salvați.

Invocați acțiunea instantanee de notificare în aplicație

  1. Selectați un aplicație creată pe planșă și apoi selectați Editați pe bara de comandă (sau creați unul nou).
  2. Selectați ecranul din panoul de navigare din stânga sau creați unul nou.
  3. În meniul Inserare, adăugați un buton la pagină folosind Text Anunțați tehnicianul.
  4. Selectați butonul și introduceți următoarele în fx bara de formule, unde DataCardValue17 este coloana care conține ID comandă și DataCardValue15 este coloana care conține adresa de e-mail a tehnicianului. În acest exemplu, se utilizează un aplicație creată pe planșă denumit Aplicația de comandă de servicii .
    Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
       TechnicianEmail: DataCardValue15.Text 
    });
    
        Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    Adăugați un buton cu Power Fx formula pentru a trimite o notificare tehnicianului
  5. Salvați și publicați modificările dvs.

Când acțiunea tehnicianului de notificare este selectată în aplicație, o notificare în aplicație este trimisă tehnicianului care a fost alocat comenzii de service. O acțiune din notificare deschide detaliile comenzii de servicii într-un panou lateral.

Notificare trimisă tehnicianului care primește în aplicație

Exemplu de plug-in instant cu conector MSN Weather

Acest plugin returnează vremea curentă pentru o anumită locație folosind conectorul MSN Weather.

Cerințe preliminare:

  1. Crearea unei referință conexiune pentru MSN Weather dacă nu este încă disponibilă în mediu: Crearea unui referință conexiune în aplicație din panoul referințe conexiune din dreapta

  2. Copiere fragment: Copiați fragment de acțiune din panoul de conexiuni

  3. Finalizați editarea formulei folosind intellisense și consumați conectorul răspuns proprietățile după cum este necesar: Completați definiția plug-in-ului în editor

  4. Salvați

  5. Testați plug-in-ul

Sfat

Utilizați funcția With() pentru a captura întregul răspuns dintr-o singură acțiune dacă doriți să accesați proprietăți diferite pe care le-ar putea avea răspuns. În exemplul de mai jos, există un parametru Location de intrare (șir) și un parametru Out de ieșire (șir).

With({ /* Capture current weather response from connector */
c: new_MsnWeather.CurrentWeather( Location, "Imperial" ).responses.weather.current
},{ /* Return concatenated weather details */
Out: "Current temp: " & c.temp & " degrees. Feels like " & c.feels & " degrees. Wind speed is " & c.windSpd & " mph."
})

Cele mai bune practici

Gestionarea erorilor de buclă infinită în pluginurile automate de cu cod redus

Nu scrieți o declarație de corecție pe un plugin automat la evenimentul "Actualizare", unde patch-ul are loc pe aceeași masă cu pluginul. Acest lucru duce la bucle infinite și eșecuri de execuție a pluginurilor.

Model problematic: Utilizarea Patch() formulei declanșează o altă actualizare. "Formulă problematică în pluginurile automate"

Model recomandat: Utilizați Set() formula în schimb pentru a evita această problemă. "Formula recomandată în pluginurile automate"

Consultați și

cu cod redus pluginuri Power Fx (versiune preliminară)