Înțelegerea referințelor la înregistrări și a căutărilor polimorfe în aplicațiile proiectate pe pânză

Când ați scris o lucrare de cercetare în școală, probabil ați furnizat o listă cu referințele la sfârșit. Nu ați inclus o copie a materialului de fond efectiv pe care l-ați folosit, ci mai degrabă un link web, titlul cărții și autorul sau alte informații, astfel încât cineva să poată urmări sursa originală. Ați amestecat diferite tipuri de surse într-o singură listă, articole din ziare alături de înregistrări audio, fiecare cu propriile detalii specifice pentru o citare adecvată. De exemplu, articolele Wikipedia includ adesea o listă lungă de referințe.

În aplicațiile proiectate pe pânză, lucrați adesea cu copii ale înregistrărilor descărcate din surse de date. Utilizați funcțiile Căutare și Filtrare și proprietatea controlului Galerie Selectat pentru a identifica înregistrarea specifică pe care o doriți. Toate înregistrările din Filtru sau Selectat vor fi de același tip de tabel, astfel încât să puteți utiliza câmpuri cu o simplă notație Câmp. Aceste copii includ adesea informații de referință, astfel încât să puteți utiliza funcția Patch pentru actualizarea sursei originale.

Aplicațiile proiectate pe pânză acceptă, de asemenea referințe la înregistrări. La fel ca o referință de document de cercetare, o referință la înregistrări se referă la o înregistrare fără a include o copie completă a acesteia. O astfel de referință se poate referi la o înregistrare din orice tabel. La fel ca referințele referitoare la lucrările de cercetare, puteți amesteca înregistrări din diferite tabele într-o singură coloană.

Multe operațiuni pe referințele la înregistrări sunt identice cu lucrul cu înregistrări. Puteți compara referințele la înregistrări unele cu altele și cu înregistrări complete. Puteți seta valoarea unei referințe la înregistrări cu ajutorul funcției Patch la fel cum ați face o căutare cu o înregistrare completă.

Există o diferență importantă de utilizare: nu puteți accesa direct câmpurile unei referințe de înregistrare fără a stabili mai întâi la ce tabel se referă. Acest lucru se datorează faptului că aplicațiile proiectate pe pânză necesită ca toate tipurile să fie cunoscute atunci când scrieți formule. Deoarece nu cunoașteți tipul unei referințe la înregistrări până când aplicația nu rulează, nu puteți utiliza direct simpla notație .Câmp. Mai întâi trebuie să determinați dinamic tipul tabelului cu funcția IsType și apoi utilizați notația Câmp cu privire la rezultatul funcției AsType.

Tipul tabelului se referă la schema fiecărei înregistrări dintr-un tabel. Fiecare tabel are un set unic de câmpuri cu nume și tipuri de date diferite. Fiecare înregistrare a tabelului moștenește acea structură; două înregistrări au același tip de tabel dacă provin din același tabel.

Notă

Puteți alege dintre mulți conectori diferiți pentru a vă conecta la diferite tipuri de surse de date pentru aplicațiile proiectate pe pânză. Cu toate acestea, atunci când lucrați cu aplicații proiectate pe pânză în interiorul Power Apps Studio, coloanele din Microsoft Dataverse sunt denumite câmpuri similar cu toate celelalte surse de date. Coloană este utilizat numai atunci când se referă la o coloană din interiorul Dataverse. Informații suplimentare: Actualizări de terminologie Dataverse

Căutări polimorfe

Microsoft Dataverse susține relațiile dintre înregistrări. Fiecare înregistrare din tabelul Conturi are o coloană de căutare a Contactului principal către o înregistrare din tabelul Contacte. Căutarea se poate referi numai la o înregistrare din Contacte și nu se poate referi la o înregistrare din, să zicem, în tabelul Echipe. Acest ultim detaliu este important, deoarece știți întotdeauna ce coloane vor fi disponibile pentru căutare.

Dataverse acceptă, de asemenea, căutări polimorfe, care se pot referi la o înregistrare din orice tabel dintr-un set. De exemplu, coloana Proprietar se poate referi la o înregistrare din tabelul Utilizatori sau Echipe. Aceeași coloană de căutare din înregistrări diferite ar putea face referire la înregistrări din tabele diferite. În acest caz, nu știți întotdeauna ce coloane vor fi disponibile.

Referințele la înregistrări pe pânză au fost proiectate pentru a lucra cu căutări polimorfe în Dataverse. Puteți utiliza, de asemenea, referințe la înregistrări în afara acestui context, acesta fiind modul în care cele două concepte diferă.

În secțiunea următoare, veți începe să explorați aceste concepte, lucrând cu căutarea Proprietar.

Afișați coloanele unui proprietar de înregistrări

Fiecare tabel din Dataverse include o coloană Proprietar. Această coloană nu poate fi eliminată, nu puteți adăuga alta și necesită întotdeauna o valoare.

Pentru a afișa acea coloană în tabelul Cont:

  1. Conectați-vă la Power Apps.

  2. În bara panoului din stânga, selectați Date > Tabele.

  3. În lista de tabele, selectați Cont.

  4. În colțul din dreapta sus, deschideți lista de filtre (care este setată implicit la Mod implicit), apoi selectați Toate.

  5. Derulați în jos până când apare coloana Proprietar.

    Coloana Proprietar pe tabelul Cont.

Această coloană de căutare se poate referi la o înregistrare din tabelul Echipe sau din tabelul Utilizatori. Nu fiecare înregistrare din aceste tabele are permisiunea de a fi un Proprietar; verificați rolurile acceptate dacă întâmpinați o problemă.

Această grafică prezintă o galerie simplă de Conturi, unde tabelul Conturi a fost adăugat în aplicație ca sursă de date:

Conturi afișate într-un control Galerie.

Important

De-a lungul acestui subiect, graficele arată unele nume și alte valori care nu fac parte din datele de eșantion cu care sunt livrate Dataverse. Pașii demonstrează cu exactitate modul de configurare a controalelor pentru un anumit rezultat, dar experiența dvs. va varia în funcție de datele din organizația dvs.

Pentru a afișa proprietarul fiecărui cont din galerie, puteți fi tentat să utilizați formula ThisItem.Owner.Name. Cu toate acestea, câmpul nume din tabelul Echipă este Numele echipei și câmpul nume din tabelul Utilizator este Numele complet. Aplicația nu poate ști cu ce tip de căutare lucrați până când nu rulați aplicația și poate varia între înregistrări în tabelul Conturi.

Aveți nevoie de o formulă care să se poată adapta acestei variații. De asemenea, trebuie să adăugați sursele de date pentru tipurile de tabel care ar putea fi Proprietar (în acest caz, Utilizatori și Echipe). Adăugați aceste trei surse de date în aplicația dvs.:

Tabelele Conturi, Echipe și Utilizatori din panoul de date.

Cu aceste surse de date implementate, utilizați această formulă pentru a afișa numele fie al unui utilizator, fie al unei echipe:

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Conturile afișate într-un control Galerie cu câmpul Proprietar afișat.

În această formulă, funcția IsType testează câmpul Proprietar cu tabelul Echipe. Dacă este de acel tip de tabel, funcția AsType îl va converti la o înregistrare Echipă. În acest moment, puteți accesa toate câmpurile din tabelul Echipe, inclusiv Numele echipei, prin utilizarea notației .Field. Dacă IsType determină că Proprietar nu este o înregistrare în tabelul Echipe, acel câmp trebuie să fie o înregistrare în tabelul Utilizatori pentru că câmpul Proprietar este obligatoriu (nu poate fi necompletat).

Pentru a utiliza orice câmpuri ale unei referințe de înregistrare, trebuie mai întâi să utilizați funcția AsType pentru a o converti la un anumit tip de tabel. Nu puteți accesa câmpuri direct din Proprietar pentru că sistemul nu știe ce tip de tabel doriți să utilizați.

Funcția AsType returnează o eroare dacă câmpul Proprietar nu se potrivește cu tipul de tabel solicitat, astfel încât să puteți utiliza funcția IfError pentru a simplifica această formulă. În primul rând, porniți caracteristica experimentală Gestionarea erorilor la nivel de formulă:

Comutare experimentală pentru a activa gestionarea erorilor la nivel de formulă.

Apoi înlocuiți formula anterioară cu aceasta:

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Filtrul pe baza unui proprietar

Felicitări - ați încheiat cel mai dificil aspect cu privire la lucrul cu o referință la înregistrări. Alte cazuri de utilizare sunt mai simple, deoarece nu accesează câmpurile înregistrării. Ca exemplu, luați filtrarea, pe care o veți explora în această secțiune.

Adăugați un control Casetă combo deasupra galeriei și setați aceste proprietăți ale noului control:

  • Elemente: Users
  • SelectMultiple: false

S-a adăugat controlul casetă combo deasupra galeriei cu proprietatea Elemente setată la Utilizatori.

Pentru a filtra galeria de către un anumit utilizator selectat din această casetă combo, setați proprietatea galeriei Elemente la această formulă:

Filter( Accounts, Owner = ComboBox1.Selected )

Galerie filtrată bazată pe valoarea setată în caseta combo.

Important

Instrucțiunile din acest subiect sunt corecte dacă urmați pașii exact. Cu toate acestea, orice formulă care se referă la un control cu numele său eșuează dacă controlul are un nume diferit. Dacă ștergeți și adăugați un control de același tip, numărul de la sfârșitul numelui controlului se schimbă. Pentru orice formulă care prezintă o eroare, confirmați că aceasta conține numele corecte ale tuturor controalelor.

Nu trebuie să folosiți IsType sau AsType deoarece comparați referințe de înregistrare la alte referințe de înregistrare sau la înregistrări complete. Aplicația cunoaște tipul tabelului al ComboBox1.Selected deoarece este derivat din tabelul Utilizatori. Conturile pentru care proprietarul este o echipă nu vor corespunde criteriului de filtrare.

Puteți deveni și mai sofisticat, susținând filtrarea fie de către un utilizator, fie de o echipă.

  1. Faceți un spațiu aproape de partea de sus a ecranului prin redimensionarea galeriei și mutând caseta combo, introduceți un control Radio deasupra galeriei, apoi setați aceste proprietăți pentru noul control:

    • Elemente: [ "All", "Users", "Teams" ]
    • Aspect: Layout.Horizontal
  2. Pentru controlul Casetă combo, setați această proprietate (dacă caseta combo dispare, selectați Utilizatori în controlul radio):

    • Vizibil: Radio1.Selected.Value = "Users"
  3. Copiați și lipiți controlul Casetă combo, mutați copia direct peste original și apoi setați aceste proprietăți pentru copie:

    • Elemente: Teams
    • Vizibil: Radio1.Selected.Value = "Teams"

    Aplicația va afișa o singură casetă combo simultan, în funcție de starea controlului radio. Deoarece sunt direct unul peste altul, vor părea a fi același control care își schimbă conținutul.

  4. La final, setați proprietatea Elemente a controlului Galerie la această formulă:

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

    Galeria filtrată care prezintă toate înregistrările sau un anumit utilizator sau echipă.

Cu aceste modificări, puteți afișa toate înregistrările sau le puteți filtra pe baza unui utilizator sau a unei echipe:

Animație care prezintă diferite rezultate filtrate pe baza controlului radio și a casetelor combo.

Formula poate fi delegată complet. Porțiunea care compară valorile butoanelor radio este o constantă pentru toate înregistrările și este evaluată înainte de a fi trimis restul filtrului la Dataverse.

Dacă doriți să filtrați tipul de proprietar, puteți utiliza funcția IsType, dar încă nu se poate delega.

Filtrați după tipul proprietarului utilizând IsType.

Actualizați proprietarul folosind Patch

Puteți actualiza câmpul Proprietar în același mod ca orice altă căutare. Pentru a seta proprietarul contului selectat actual la prima echipă:

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

Această abordare nu diferă de o căutare normală, deoarece aplicația cunoaște tipul Prima (Echipe). Dacă doriți în schimb primul utilizator, înlocuiți porțiunea cu Primii(utilizatori). Funcția Patch știe că câmpul Proprietar poate fi setat la oricare dintre aceste două tipuri de tabele.

Pentru a adăuga această capacitate în aplicație:

  1. În panoul Vizualizare arborescentă, selectați controlul Radio și cele două controale Casetă combo în același timp.

  2. În meniul elipsă, selectați Copiați aceste elemente.

    Copierea de mai multe controale folosind vizualizarea arborescentă.

  3. În același meniu, selectați Lipire.

    Lipirea de mai multe controale folosind vizualizarea arborescentă.

  4. Mutați controalele copiate în partea dreaptă a galeriei.

    Controalele copiate mutate în partea dreaptă a galeriei.

  5. Selectați controlul copiat Radio și apoi modificați aceste proprietăți:

    • Elemente: [ "Users", "Teams" ]
    • Implicit: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    S-au eliminat toate opțiunile de pe controlul radio.

  6. În controlul Radio, selectați Utilizatori astfel încât controlul Casetă combo care listează utilizatorii să fie vizibil.

  7. Selectați controlul vizibil Casetă combo, apoi setați proprietatea DefaultSelectedItems pentru această formulă:

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    Set de proprietăți implicite pentru caseta combo Utilizatori.

  8. În controlul Radio, selectați Echipe astfel încât controlul Casetă combo care listează echipele să fie vizibil.

  9. Selectați controlul Radio pentru a îndepărta selecția de controlul Casetă combo, acum vizibil pentru utilizatori.

  10. Selectați controlul vizibil Casetă combo pentru echipe, apoi setați proprietatea DefaultSelectedItems pentru această formulă:

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    Set de proprietăți implicite pentru caseta combo Teams.

  11. Introduceți un control Buton, mutați-l sub controlul Casetă combo și apoi setați proprietatea butonului Text la "Patch Owner".

  12. Setați proprietatea OnSelect a butonului la această formulă:

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    Formula setată pe controlul Buton.

Controalele copiate Radio și Casetă combo arată proprietarul pentru contul selectat în galerie. Cu aceleași controale, puteți seta proprietarul contului la orice echipă sau utilizator, selectând butonul:

Animație care prezinta patch-ul de Owner cu un Utilizator sau o Echipă.

Afișați proprietarul folosind un formular

Puteți arăta un câmp Proprietar în interiorul unui formular prin adăugarea unui card personalizat. Din această scriere, nu puteți modifica valoarea câmpului cu un control de formular.

  1. Introduceți un control Editare formular, apoi redimensionați-l și mutați-l în colțul din dreapta jos.

  2. Pe fila Proprietăți din partea dreaptă a ecranului, deschideți lista Sursă de date, apoi selectați Conturi.

    Control formular care arată câmpuri suplimentare cu valori necompletate.

  3. Setați proprietatea Element a formularului la Gallery1.Selected.

    Control formular care arată câmpuri suplimentare populate din elementul selectat în galerie.

  4. Pe fila Proprietăți din partea dreaptă a ecranului, selectați Editare câmpuri.

  5. În panoul Câmpuri, selectați elipsele, apoi selectați Adăugați un card personalizat.

    Comandă pentru adăugarea unui card personalizat.

    Noul card apare în partea de jos a controlului formularului.

  6. Redimensionați cardul conform necesităților pentru a afișa tot textul.

    Cardul personalizat inserat, gol.

  7. Introduceți un control Etichetă în cardul personalizat, apoi setați proprietatea etichetei Text la formula pe care ați utilizat-o în galerie:

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    Card personalizat care arată câmpul Proprietar într-un control de etichetă.

Pentru fiecare selecție din galerie, apar mai multe câmpuri ale contului, inclusiv proprietarul înregistrării. Dacă schimbați proprietarul folosind butonul Patch, controlul formular arată, de asemenea, această modificare.

Animație care prezintă controlul formularului care raspunde modificărilor din galerie.

Afișați coloanele unui client

În Dataverse, coloana de căutare Client este o altă căutare polimorfă care este foarte asemănătoare cu Proprietar.

Proprietar este limitat la una per tabel, dar tabelele pot include zero, una sau mai multe coloane de căutare Client. Tabelul de sistem Contacte include coloana Numele companiei, care este o coloană de căutare Client.

Tabel de contact care arată coloana Nume companie ca tip de date ale clientului care nu este necesar.

Puteți adăuga mai multe coloane de căutare Client într-un tabel selectând tipul de date Client pentru o nouă coloană.

Tipul de date ale clienților din lista tipurilor de date la crearea unei coloane.

O coloană de căutare Client se poate referi la o înregistrare din tabelul Conturi sau din tabelul Persoane de contact. Veți folosi funcțiile IsType și AsType cu aceste tabele, așa că acum ar fi un moment potrivit pentru a le adăuga ca surse de date (puteți lăsa la locul lor Echipe și Utilizatori).

Tabelele Conturi, Utilizatori și Persoane de contact din panoul de date.

Tratamentul câmpurilor Client și Proprietar sunt atât de similare încât puteți copia literalmente aplicația (Fişier > Salvează ca, apoi specificați un alt nume) și efectuați aceste înlocuiri simple:

Locație Eșantion Proprietar Eșantion Client
Complet Proprietar 'Nume client'
Complet Utilizatori Conturi
Complet Echipe Persoane de contact
ProprietateaElemente a galeriei Conturi Persoane de contact
ProprietateaElemente a formularului Conturi Persoane de contact
Primul argument al Patch
în proprietate butonului OnSelect
Conturi Persoane de contact
Filtrare proprietate radio Elemente [ "Toate", "Utilizatori", "Echipe" ] [ "Toate", "Conturi", "Contacte" ]
Patch proprietate radio Elemente [ "Utilizatori", "Echipe" ] [ "Conturi", "Contacte" ]
Proprietatea casetei combo Vizibil "Utilizatori" și "Echipe" "Conturi" și "Contacte"

De exemplu, noua galerie ar trebui să aibă această proprietate Elemente:

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

Aplicația pentru clienți derivată din aplicația Proprietar cu modificări simple aplicate.

Două diferențe importante între Client și Proprietar necesită o actualizare la formulele din galerie și la formular:

  1. Relații Unu-la-mai-mulți între Conturi și Contacte primează atunci când vă referiți la aceste tipuri de tabele după nume. În loc de Conturi, utilizați [@Conturi]; în loc de Contacte, utilizați [@Contacte]. Prin utilizarea operator global de dezambiguizare, vă asigurați că vă referiți la tipul tabelului IsType și AsType. Această problemă există doar în contextul înregistrării galeriei și a controalelor formular.

  2. Câmpul Proprietar trebuie să aibă o valoare, dar câmpurile Client pot fi necompletate. Pentru a afișa rezultatul corect fără un nume de tip, testați acest caz cu funcţia ISBLANK și afișați în schimb un șir de text gol.

Ambele modificări sunt în aceeași formulă, care apare în cardul personalizat în formular, precum și în proprietatea Text a controlului etichetei galeriei:

If( IsBlank( ThisItem.'Company Name' ), "",
    IsType( ThisItem.'Company Name', Accounts ),
        "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Actualizați la proprietatea textului a controlului etichetelor de subtitrare din galerie.

Cu aceste modificări, puteți vizualiza și modifica câmpul Numele companiei în tabelul Contacte.

Animație care arată modul în care selectarea unui contact schimbă celelalte controale și formularul.

Înțelegeți coloanele de căutare În ceea ce privește

Coloana de căutare În ceea ce privește diferă puțin de cele cu care ați lucrat deja în cadrul acestui subiect. Veți începe aplicând tiparele pe care le-a descris acest subiect mai devreme, apoi veți învăța alte trucuri.

Puteți începe pur și simplu cu tabelul Faxuri. Acest tabel are o coloană de căutare polimorfă În ceea ce privește, care poate face referire la Conturi, Contacte și alte tabele. Puteți lua aplicația pentru Clienți și modifica pentru Faxuri.

Locație Eșantion Client Eșantion Faxuri
Complet 'Nume client' Referitor la
ProprietateaElemente a galeriei Persoane de contact Faxuri
ProprietateaElemente a formularului Persoane de contact Faxuri
Primul argument al Patch
în proprietate butonului OnSelect
Persoane de contact Faxuri

Din nou, va trebui să adăugați un sursă de date: de data aceasta pentru Faxuri. Pe fila Vizualizare, selectați Surse de date:

Panoul de date care afișează tabele Conturi, Echipe, Utilizatori, Contacte și Faxuri.

O diferență importantă pentru Referitor la este că nu se limitează la Conturi și Contacte. De fapt, lista tabelelor este extensibilă cu tabele particularizate. Majoritatea aplicațiilor pot găzdui acest punct fără modificări, dar trebuie să actualizați formula pentru eticheta din galerie și formular:

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',
    ""
)

Proprietatea Text actualizată pentru controlul subtitrărilor pentru căutări Referitoare la.

După ce efectuați aceste modificări, lucrați cu căutarea Referitor la la fel cum ai făcut-o cu căutările Proprietar și Client.

Animație care arată modul în care selectarea unui element din galerie schimbă celelalte controale și formularul.

Înțelegerea relațiilor Referitor la

Referitor la diferă de Proprietar și Client deoarece prima implică o relație mulţi-către-unu. Prin definiție, o relație inversă, unu-către-mulți vă permite să scrieți First( Accounts ).Faxes.

Să facem backup și să privim definițiile tabelului. Î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. Când vizualizați sau creați un tabel de activități, setările acestuia apar sub Mai multe setări.

Setarea tabelului de activitate la crearea unui tabel.

Alte tabele pot fi legate de un tabel de activitate dacă sunt activate ca sarcina de activitate în setările tabelului. Conturi, Contacte și multe alte tabele standard sunt astfel desemnate (din nou, sub Mai multe setări).

Setarea sarcinii de activitate la crearea unui tabel.

Toate tabelele de activitate și tabelele de activitate-sarcină au o relație implicită. Dacă schimbați filtrul în Toate în partea de sus a ecranului, selectați tabelul Faxuri și apoi selectați fila Relații, apar toate tabelele care pot fi ținta unei căutări În ceea ce privește.

Relațiile din tabelul Faxuri care arată În ceea ce privește relațiile mulți-la-unu.

Dacă arătați relațiile pentru tabelul Conturi, apar toate tabelele care pot fi sursa unui câmpul de căutare În ceea ce privește.

Relațiile din tabelul Cont care arată În ceea ce privește relațiile una-la-mai-multe.

Ce înseamnă toate astea?

  • Când scrieți formule, trebuie să luați în considerare faptul că lista tabelelor de activitate nu este corectă și v-o puteți crea pe a dvs. Formula trebuie să gestioneze în mod corespunzător un tabel de activitate la care nu vă așteptați.
  • Sarcinile și activitățile de activitate au o relație una-la-mai-multe. Puteți solicita cu ușurință toate faxurile care se referă la un cont.

Pentru a explora acest concept în aplicație:

  1. Adăugați un alt ecran.

    Introduceți un ecran gol.

  2. Introduceți un control galerie, redimensionați-l, apoi mutați-l în partea stângă a ecranului.

  3. Pe fila Proprietăți din partea dreaptă a ecranului, setați Elementele galeriei la Conturi.

    Setați Elementele la Conturi în panoul de proprietăți.

  4. Setați aspectul galeriei la Titlu, apoi setați câmpul de titlu la Nume cont.

    Setați Aspect sau Titlu pentru controlul galeriei în panoul proprietății.

  5. Adăugați o a doua galerie, redimensionați-o, apoi mutați-o în partea dreaptă a ecranului.

  6. Setați noua proprietate a galerie Elemente la Gallery2.Selected.Faxes.

    Acest pas returnează lista de faxuri filtrate pentru un cont dat.

    Setați proprietatea Elemente din galeria care afișează faxurile.

  7. Setați aspectul galeriei la Titlu și subtitlu, apoi setați câmpul de titlu pentru a arăta câmpul Subiect (care ar putea fi minuscule subiect).

    Setați titlul la câmpul Subiect.

Pe măsură ce selectați un element din lista de conturi, lista de faxuri afișează faxurile numai pentru acel cont.

Animație care prezintă selecția în galeria de conturi care conduce lista de faxuri.

Tabel de activități

După cum descrie secțiunea anterioară, puteți afișa toate faxurile pentru un cont. Cu toate acestea, puteți afișa, de asemenea, toate activitățile pentru un cont, inclusiv faxuri, mesaje de e-mail, apeluri telefonice și alte interacțiuni.

Pentru ultimul scenariu, utilizați tabelul Activitate. Puteți afișa acest tabel pornind Toate în colțul din dreapta sus pentru a elimina filtrul din lista de tabele.

Lista tabelelor care prezintă tabelul de Activitate.

Tabelul Activitate este special. Ori de câte ori adăugați o înregistrare la tabelul Faxuri, sistemul creează, de asemenea, o înregistrare în tabelul Activitate cu coloanele care sunt comune în toate tabelele de activitate. Dintre aceste coloane, Subiect este una dintre cele mai interesante.

Puteți afișa toate activitățile schimbând o singură linie în exemplul precedent. Înlocuiți Gallery2.Selected.Faxes cu Gallery2.Selected.Activities.

Modificarea proprietății Elemente pentru a doua galerie, modificând de la fax la activități.

Înregistrările provin de la tabelul Activitate, dar puteți totuși folosi funcția IsType pentru a identifica ce fel de activitate sunt. Din nou, înainte de a utiliza IsType cu un tip de tabel, trebuie să adăugați sursa de date.

Panoul de date care afișează toate tabelele necesare pentru funcția IsType.

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"
)

Setați proprietatea textului la formulă pentru a afișa informații despre faxuri, apeluri telefonice și alte activități.

Puteți utiliza, de asemenea AsType pentru a accesa câmpurile tipului specific. De exemplu, această formulă determină tipul fiecărei activități și, pentru apelurile telefonice, arată numărul de telefon și direcția apelului din tabelul Numere de telefon:

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Proprietate text extinsă cu mai multe informații pentru un apel telefonic.

Drept urmare, aplicația arată o listă completă de activități. Câmpul Subiect apare pentru toate tipurile de activități, indiferent dacă formula le ia în considerare sau nu. Pentru tipurile de activități pe care le cunoașteți, puteți afișa numele de tip și informațiile specifice de tip despre fiecare activitate.

Ecran completat care prezintă informații pentru diferite tipuri de activități.

Tabel de note

Până în prezent, toate exemplele În ceea ce privește s-au bazat pe activități, dar tabelul Note reprezintă un alt caz.

Când creați un tabel, puteți activa atașamentele.

Activarea atașamentelor și notelor la crearea unui tabel.

Dacă bifați caseta de selectare pentru activarea atașamentelor, veți crea o relație În ceea ce privește cu tabelul Note, așa cum arată acest grafic pentru tabelul Conturi:

Tabel de cont care arată relația cu Note printr-o relație de una-la-mai-multe.

În afară de această diferență, utilizați căutarea Referitor la în același mod în care utilizați activități. Tabelele care sunt activate pentru atașamente au o relație de una-la-mai-multe la Note, ca în acest exemplu:

First( Accounts ).Notes

Notă

Începând cu această scriere, căutarea În ceea ce privește nu este disponibilă pentru tabelul Note. Nu puteți citi sau filtra pe baza În ceea ce privește și nu puteți seta coloana folosind Patch.

Cu toate acestea, o relație unu-la-mulți inversă Note este disponibilă, deci puteți filtra o listă de note pentru o înregistrare care este activată pentru atașamente. Puteți utiliza, de asemenea, funcția Corelare pentru a adăuga un tabel al înregistrării Note, dar nota trebuie creată mai întâi, ca în acest exemplu:

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

Părți activitate

Din această scriere, aplicațiile proiectate pe pânză nu acceptă părțile activitate.

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).