Microsoft Dataverse și îmbunătățirea experienței sursă de date

Prezentare generală

În mai 2021, multe funcții care anterior erau opționale sunt acum comportamentul implicit pentru toate aplicațiile noi. Acest articol oferă îndrumări utilizatorilor care au dezvoltat o aplicație înainte de introducerea de noi funcții, despre cum să își actualizeze aplicația pentru a folosi cele mai recente funcționalități.

Nativ Dataverse

Dacă ați creat o aplicație proiectată pe pânză fie cu Dataverse, fie cu conectorul Dynamics 365 connector înainte de noiembrie 2019, atunci este posibil să nu beneficiați de avantajele utilizării experienței de conectare native curente pentru Dataverse.

Dacă v-ați creat aplicația înainte de noiembrie 2019 și nu utilizați o conexiune nativă Dataverse , atunci în Setări din fila Funcții viitoare, în fila „Retras” veți găsi Îmbunătățiți experiența sursă de date și opțiunea Microsoft Dataverse vizualizări împreună cu Date relaționale, opțiuni și alte funcții noi pentru Microsoft Dataverse.

Cum fac upgrade?

Faceți upgrade aplicației inspectând setările funcțiilor și apoi urmând instrucțiunile de mai jos:

Datele relaționale, seturile de opțiuni și alte funcții noi pentru Microsoft Dataverse sunt Dezactivate

Verificați secțiunea Retras sub Caracteristici viitoare. Dacă este setat pe Dezactivat, continuați cu următoarele instrucțiuni ca prim pas în conversie.

Dacă nu vedeți Date relaționale, seturi de opțiuni și alte caracteristici noi pentru Microsoft Dataverse în Setări generale sau dacă este deja Pornit, săriți pașii următori și continuați cu următoarea secțiune.

  • Pasul 1: Comutați caracteristica Folosiți numele afișate pe Activat:

    1. Comutați caracteristica Folosiți numele afișate pe Activat.
    2. Așteptați ca monitorul de stare să termine analiza aplicației.
    3. Salvați, închideți și redeschideți aplicația.
    4. Rezolvați toate erorile formulei.
    5. Salvați, închideți și redeschideți aplicația.

    Posibile erori și sugestii:

    Este posibil ca unele dintre numele de afișat recent afișate să intre în conflict cu numele de afișat pentru alte tabele, câmpuri sau controale. De exemplu, este posibil să aveți un control și un câmp cu același nume. Puteți schimba numele controlului cu o valoare unică de remediat.

    Pentru orice conflict de nume afișat de câmp și tabel, este posibil să vedeți o formulă care așteaptă un tabel, dar care se rezolvă la un nume de câmp cu scop local.

    Utilizați paranteza pătrată cu un simbol @ pentru a indica un domeniu global, astfel încât să se rezolve în tabel; de exemplu, [@tableName].

  • Pasul 2: Comutați caracteristicile Date relaționale, seturi de opțiuni și alte funcții noi pentru Microsoft Dataverse și Utilizați tipurile de date GUID în loc de șiruri pe Activat:

    1. Comutați caracteristica Date relaționale, seturi de opțiuni și alte funcții noi pentru Microsoft Dataverse pe Activat.
    2. Comutați caracteristica Utilizați tipurile de date GUID în loc de șiruri pe Activat.
    3. Așteptați ca monitorul de stare să termine analiza aplicației.
    4. Rezolvați toate erorile formulei.
    5. Salvați, închideți și redeschideți aplicația.

    Posibile erori și sugestii:

    Este posibil să aveți erori în această etapă dacă utilizați un câmp de alegere sau valori de text GUID codificate.

    • Valorile alegerii: Dacă utilizați câmpul de alegere cu un identificator de text pentru valoarea de alegere, utilizați în schimb notația punct pentru a face referire la valoarea de alegere. De exemplu, schimbați Patch(Accounts, OptionSet1 = “12345”) la Patch(Accounts, OptionSet.Item1) unde Item1 corespunde cu valoarea 12345.
      Mai multe informații: Exemple detaliate.
    • GUID: Dacă utilizați un șir GUID static, cum ar fi 015e45e1044e49f388115be07f2ee116, convertiți-l într-o funcție care returnează un obiect GUID; de exemplu GUID(“015e45e1044e49f388115be07f2ee116”).
    • Căutări: Dacă utilizați funcții de căutare pentru a obține valori de căutare de primul nivel, cum ar fi Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), luați în schimb în considerare utilizarea ThisItem.PrimaryContacts (unde PrimaryContacts este numele tabelului).

Îmbunătățiți experiența sursă de date și Microsoft Dataverse vizualizările este dezactivată

Utilizați instrucțiunea următoare pentru a comuta caracteristica Îmbunătățiți experiența sursă de date și vizualizări Microsoft Dataverse pe Activat:

  1. Eliminați conexiunile sursă de date Dataverse existente.
  2. Comutați pe Activat caracteristica Îmbunătățiți experiența sursă de date și vizualizări Microsoft Dataverse.
  3. Adăugați conexiunea Dataverse folosind noua experiență de selecție sursă de date.
  4. Salvați aplicația.

Notă

Dacă aplicația dvs. este extrem de mare, adăugarea conexiunilor dvs. sursă de date poate dura ceva timp. Nu închideți aplicația în timpul acestui proces.

Conversia aplicațiilor proiectate pe pânză cu Dynamics 365 Connector

Pentru a vă converti aplicația care utilizează conectorul Dynamics 365, trebuie să eliminați și să adăugați conexiunile la sursele de date. Folosiți pașii de mai jos pentru a converti conexiunile la sursele de date.

  1. Asigurați-vă că caracteristica Îmbunătățiți experiența sursă de date și vizualizările Microsoft Dataverse este comutată pe Activat.

  2. Eliminați conexiunile sursă de date Dynamics 365 existente.

  3. Adăugați conexiunile la sursele de date la Dataverse folosind noua experiență de selecție sursă de date.

    Notă

    • Dacă aveți conexiuni cu alte medii (altele decât cele actuale), selectați categoria Tabel și apoi opțiunea Mai mult (...) pentru schimbarea mediului. Apoi puteți selecta un tabel dintr-un mediu diferit pe care să îl adăugați la aplicația dvs. Conexiunile între entitățile găzduite nu funcționează cu conectorul nativ optimizat. Va trebui să utilizați integrarea datelor pentru a accesa datele între entitățile găzduite.
    • Pentur a putea vedea un mediu la care doriți să adăugați conexiunea, trebuie să îndepliniți una dintre următoarele cerințe:
      • Sunteți Proprietarul aplicației sau aplicația este partajată cu dvs. drept un Co-proprietar.
      • Sunteți membru al cel puțin unuia dintre aceste roluri de securitate: Administrator de mediu, Creator de mediu, sau Administrator de sistem. Pentru mai multe informații despre rolurile de securitate într-un mediu, accesați Configurați securitatea utilizatorului la resursele dintr-un mediu.
  4. Salvați aplicația.

Posibile erori și sugestii:

Este posibil să aveți erori la conversie dacă: nu utilizați numele afișate, dacă utilizați șiruri GUID sau dacă utilizați o alegere.

  • Dacă numele controlului intră în conflict, schimbați numele controlului pentru a fi diferit și unic.
  • Pentru conflictele de nume de afișare a câmpurilor și a tabelului, este posibil să vedeți o formulă care așteaptă un tabel, dar care se rezolvă la un nume de câmp mai local. Folosiți paranteza pătrată cu un simbol @ pentru a indica un domeniu global, astfel încât să se rezolve în tabel; de exemplu, [@tableName].
  • Valorile alegerii: Dacă utilizați un câmp de alegere cu un identificator de text pentru valoarea de alegere, utilizați în schimb notația punct pentru a face referire la valoarea de alegere. De exemplu, schimbați Patch(Accounts, OptionSet1 = “12345”) la Patch(Accounts, OptionSet.Item1) unde Item1 corespunde cu valoarea 12345.
    Mai multe informații: Exemple detaliate.
  • GUID: Dacă utilizați un șir GUID static, cum ar fi 015e45e1044e49f388115be07f2ee116, convertiți-l într-o funcție care returnează un obiect GUID; de exemplu GUID(“015e45e1044e49f388115be07f2ee116”).
  • Căutări: Dacă utilizați funcții de căutare pentru a obține valori de căutare de primul nivel, cum ar fi Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), luați în schimb în considerare utilizarea ThisItem.PrimaryContacts (unde PrimaryContacts este numele tabelului).
  • Pentru orice referințe polimorfe, consultați secțiunea Exemple detaliate de mai jos.

Exemple detaliate

Conversia aplicației dvs. pentru a utiliza noile tipuri de date Seturi de opțiuni și Două opțiuni cu controale acceptabile pot fi o provocare în timp ce actualizați o aplicație pentru a utiliza noua caracteristică Îmbunătățirea experienței cu sursele de date și cu vizualizările Microsoft Dataverse.

Alegeri

Câmpurile separate _myfield și _myfield_label au fost utilizate pentru alegere mai devreme. Acum, există un singur myfield care poate fi utilizat atât pentru comparații independente de localizare, cât și pentru a obține eticheta specifică localizării.

Eliminarea și adăugarea cardurilor de date la alegere

Vă recomandăm să eliminați cardurile de date existente și să le adăugați înapoi pentru a lucra cu alegerea dvs. De exemplu, dacă lucrați cu tabelul Cont și cu opțiunea Categorie, vedeți că proprietatea DataField a cardului de date a fost setată la _accountcategorycode_label. În lista de câmpuri puteți vedea că cardul de date are un tip de Şir:

SetOpțiuni cu nume de stil vechi.

Cu noua caracteristică Experiență îmbunătățită sursă de date și vizualizări Microsoft Dataverse, nu mai vedeți _accountcategorycode_label. Este înlocuit cu accountcategorycode. Cardul dvs. este acum marcat ca fiind particularizat și veți vedea erori. Scoateți vechiul card de date și adăugați înapoi Alegere. Noul card de date este conștient de Alegere.

OptionSet cu un nume de stil nou.

Editarea expresiilor Alegere, Filtru, pentru a utiliza o nouă sintaxă

Anterior, dacă doreați să utilizați o valoare Choice într-o expresie Filter, trebuia să utilizați câmpul Value . De exemplu:

Filter(Account,'Category Value' = "1")

Va trebui să editați această formulă. Identificatorul textului de alegere nu mai este utilizat pentru valoare. Această expresie ar trebui actualizată la:

Filter(Account, Category= ‘Category (Accounts)’.’Preferred Customer’)

„Categorie (Conturi)” este numele de enumerare utilizat în câmpul Categorie din tabelul Conturi. Aceasta este o alegere locală. Puteți citi mai multe despre alegerile locale și globale aici: Alegeri globale.

Editarea instrucțiunilor de patch-uri pentru a utiliza o nouă sintaxă

Următorul este un exemplu de declarație Patch anterioară pentru alegere:

Patch( Accounts, First(Accounts), { ‘Category Value’: 1 } ) )

Pentru a urma acest formular, va trebui să vă actualizați declarațiile:

Patch( Accounts, First(Accounts), { Category: ‘Category (Accounts)’.’Preferred Customer’ } )

Alegerea clarificării

Dacă numele afișat al unei alegeri câmp și numele alegerii sunt aceleași, va trebui să clarificați formula. Pentru a utiliza în continuare exemplul Codului categoriei de conturi, @ implică utilizarea alegerii, nu a câmpului.

Filter(Accounts, 'Category Code' = [@’Category Code’].'Preferred Customer')

Două opțiuni

Eliminarea și adăugarea cardurilor de date Da/Nu

Eliminați cardurile de date existente și adăugați-le din nou pentru a lucra la Da/Nu al dvs. Tipurile de date au fost recunoscute anterior ca simple Boolean - cum ar fi true/on și false/off, fără etichete:

Da/Nu - stil vechi.

Cu noua caracteristică Experiență îmbunătățită sursă de date și vizualizări Microsoft Dataverse, cardul dvs. va fi acum marcat ca fiind particularizat și veți vedea erori. Scoateți vechiul card de date și adăugați înapoi alegerea. În mod implicit, veți vedea un control de editare cu două opțiuni după adăugare.

Da/Nu - stil nou.

Dacă preferați comutatorul pentru câmpul dvs. Boolean, puteți debloca cardul de date și înlocui controlul din cardul de date cu o comutare. De asemenea, va trebui să setați aceste proprietăți pe Comutare.

Toggle1.Default = ThisItem.’Do not allow Bulk Emails’
Toggle1.TrueText = ‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’
Toggle1.FalseText = ‘Do not allow Bulk Emails (Accounts)’.Allow
DataCard.Value = If( Toggle1.Value,
    ‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’,
    ‘Do not allow Bulk Emails (Accounts)’.Allow )

Comutator Două opțiuni.

Rafinarea declarațiilor Patch Două opțiuni

Folosind funcția Patch cu Două opțiuni ar trebui să funcționeze „așa cum este”. Susține utilizarea directă a adevărat și fals, similar cu Boolean. Singura diferență este că dacă ați pus mai devreme valoarea într-un control Etichetă care a arătat adevărat și fals, acum va afișa în schimb etichetele Două opțiuni.

Căutări polimorfe

Următoarele instrucțiuni ajută la actualizarea aplicației dvs. dacă a făcut referință la câmpurile polimorf. Căutările polimorfe, din același câmp, acceptă referințe la un set restricționat de tabele multiple. Similar cu referințele în alte limbi, o referință de înregistrare este un indicator către o înregistrare specifică într-un tabel specific. O referință de înregistrare conține informațiile din tabel, permițându-i să indice o înregistrare din mai multe alte tabele, care diferă de o căutare normală care poate indica doar înregistrările dintr-un singur tabel.

Accesați, setați și filtrați în câmpul Proprietar al unei înregistrări

De exemplu, câmpul Proprietar din tabel se poate referi la o înregistrare din tabelul Utilizatori sau Echipe. Același câmp de căutare din înregistrări diferite ar putea face referire la înregistrări din tabele diferite.

Câmpul Proprietar polimorf.

Polimorf cu filtru și Patch

Referințele de înregistrare pot fi utilizate la fel ca o înregistrare completă:

Filter( Accounts, Owner = First( Teams ) )
Patch( Accounts, First( Accounts ), { Owner: First( Users ) })

Deoarece o referință poate indica diferite tabele, trebuie să fiți specific. Nu putețu utiliza ThisItem.Owner.Name deoarece câmpul nume din tabelul Echipă este Numele echipei și câmpul nume din tabelul Utilizator este Numele complet. Power Apps nu știe la ce tip de căutare vă referiți până când rulați aplicația.

Pentru a remedia această problemă:

  1. Adăugați sursele de date pentru tipurile de entitate care ar putea fi Proprietar; în exemplul curent, Utilizatori și Echipe).
  2. Folosiți mai multe funcții pentru a vă clarifica intenția.

Există două funcții noi pe care le puteți folosi:

  • IsType - Verifică dacă o referință de înregistrare este de un anumit tip de tabel.
  • AsType - Trimite o referință de înregistrare la un anumit tip de tabel.

Cu aceste funcții, puteți scrie o formulă care afișează numele proprietarului preluat din două câmpuri denumite diferit, pe baza tipului de tabel al proprietarului:

If( IsType( ThisItem.Owner,  [@Teams]), 
    AsType( ThisItem.Owner, [@Teams]).'Team Name', 
    AsType( ThisItem.Owner, [@Users]).'Full Name' )

Galerie cu Ca tip.

Operatorul global de clarificare pentru [@Teams] și [@Users] este folosit pentru a vă asigura că faceți referire la tipul de tabel global. Deși în acest caz nu este necesar, este recomandat să fie întotdeauna clar. Relațiile unu-la-mai-mulți adesea intră în conflict în domeniul de aplicare al înregistrării galeriei, iar această practică evită această confuzie.

Accesați și setați câmpul Nume companie (un tip de date client) din tabelul Contacte

Câmpul de căutare Client este o altă căutare polimorfă similară cu Proprietar. Puteți avea un singur câmp Proprietar per tabel. Dar un tabel poate include zero, unul sau mai multe câmpuri de căutare ale clienților. Tabelul de sistem Contacte include câmpul Numele companiei, care este un câmp de căutare Client. Citiți arată câmpurile unui client pentru mai multe detalii.

Accesați și setați câmpul tabelelor de activitate În ceea ce privește, cum ar fi Faxuri, Apeluri telefonice, Mesaje de e-mail

Căutările polimorfe nu sunt limitate la Conturi și Contacte. Lista tabelelor este extensibilă cu tabele particularizate. De exemplu, tabelul Faxuri are un câmp de căutare polimorf În ceea ce privește, care poate face referire la Conturi, Contacte și alte tabele. Dacă aveți o galerie cu sursă de date setată pe Faxuri, puteți utiliza următoarea formulă pentru a afișa numele asociat câmpului de căutare Referitor la.

If( IsBlank( ThisItem.Regarding ), "",
   IsType( ThisItem.Regarding, [@Accounts] ),
       "Account: " & AsType( ThisItem.Regarding, [@Accounts] ).'Account Name',
   IsType( ThisItem.Regarding, [@Contacts] ),
       "Contacts: " & AsType( ThisItem.Regarding, [@Contacts] ).'Full Name',
   "" )

Galerie cu Referitor la.

Citiți Câmpurile de căutare Referitor la și Relațiile Referitor la pentru mai multe detalii.

Accesați lista tuturor activităților pentru o înregistrare

În Dataverse, tabele precum Faxuri, Sarcini, E-mailuri, Note, Apeluri telefonice, Scrisori și Chaturi sunt desemnate ca Activități. De asemenea, puteți crea tabele de activitate particularizate.

Puteți afișa activități de un anumit tip (cum ar fi Faxuri sau Impozite) sau toate activitățile asociate unui tabel, cum ar fi contul. Adăugați tabelul Activități și alte tabele individuale ale căror date intenționați să le afișați în aplicația proiectată pe pânză.

De fiecare dată când adăugați o înregistrare la (de exemplu tabelul Sarcini), se creează o înregistrare în tabelul Activitate cu câmpurile comune tuturor tabelelor de activitate. Citiți tabel de activitate pentru mai multe detalii.

Următorul exemplu arată că, pe măsură ce selectați un Cont, vor fi afișate toate Activitățile asociate contului respectiv:

Activități polimorfe.

Înregistrările sunt afișate din tabelul Activitate. Dar puteți folosi în continuare funcția IsType pentru a identifica ce tip de activitate sunt. Din nou, înainte de a utiliza IsType cu un tip de tabel, trebuie să adăugați sursa de date necesară.

Folosind această formulă, puteți afișa tip înregistrare într-un control de etichetă din galerie:

If( IsType( ThisItem, [@Faxes] ), "Fax",
   IsType( ThisItem, [@'Phone Calls'] ), "Phone Call",
   IsType( ThisItem, [@'Email Messages'] ), "Email Message",
   IsType( ThisItem, [@Chats] ), "Chat",
   "Unknown")

Nou Polymorphic-IsType.

Accesați lista de Note pentru o înregistrare

Când creați un tabel, puteți activa atașamentele. Dacă bifați caseta de validare pentru activarea atașamentelor, creați o relație cu privire la tabelul Note, așa cum arată acest grafic pentru tabelul Conturi:

Câmp note.

Filtrarea

Nu puteți citi sau filtra pe baza câmpului Referitor la. Cu toate acestea, relația Notă inversă una-la-mai-multe este disponibilă. Pentru a lista toate notele asociate unui tabel de cont, puteți utiliza următoarea formulă:

First( Accounts ).Notes
Patch

Nu puteți seta câmpul Note pe un tabel utilizând Patch. Pentru a adăuga o înregistrare la tabelul Note al unui tabel, puteți utiliza funcția Relație. Creați mai întâi nota, ca în acest exemplu:

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note", isdocument:'Is Document (Notes)'.No } ) )

Pașii următori

Consultați și

Ce este Dataverse?

Notă

Ne puteți spune care preferințele dvs. lingvistice pentru documentație? Răspundeți la un chestionar scurt. (rețineți că acest chestionar este în limba engleză)

Chestionarul va dura aproximativ șapte minute. Nu sunt colectate date personale (angajament de respectare a confidențialității).