Partajați prin


Obiectul Aplicație Power Apps

Se aplică pentru: Aplicații Canvas Aplicații bazate pe model

Oferă informații despre aplicația care rulează în prezent și controlează comportamentul aplicației.

Descriere

Similar unui control, obiectul Aplicație oferă proprietăți care identifică ecranul afișat și care solicită utilizatorului să salveze modificările, astfel încât să nu se piardă. Fiecare aplicație are un obiect Aplicație.

Puteți scrie formule pentru unele proprietăți ale obiectului Aplicație. În partea de sus a panoului Vizualizare arborescentă, selectați obiectul Aplicație ca pe orice alt control sau ecran. Vizualizați și editați una dintre proprietățile obiectului selectând-o în lista verticală din stânga barei de formule.

Obiectul App din panoul de vizualizare arborescent.

Proprietatea ActiveScreen

Proprietatea ActiveScreen identifică ecranul afișat.

Această proprietate returnează un obiect ecran. Folosiți-l pentru a face referire la proprietățile ecranului afișat curent, cum ar fi numele cu formula App.ActiveScreen.Name. De asemenea, puteți compara această proprietate cu un alt obiect ecran, cum ar fi cu formula de comparație App.ActiveScreen = Screen2 pentru a testa dacă Screen2 este ecranul afișat în prezent.

Utilizați funcția Back sau Navigate pentru a schimba ecranul afișat.

Proprietate BackEnabled

Proprietatea BackEnabled modifică modul în care aplicația răspunde la gestul înapoi a dispozitivului (glisați sau utilizați butonul hardware înapoi pe dispozitive Android , glisați de la stânga pe iOS dispozitive) când rulează în Power Apps mobil. Când este activat, gestul înapoi a dispozitivului navighează înapoi la ecranul care a fost afișat cel mai recent, care este similar cu formula Înapoi . Când este dezactivat, gestul înapoi a dispozitivului readuce utilizatorul la lista de aplicații.

Proprietățile ConfirmExit

Nimeni nu dorește să piardă modificările nesalvate. Utilizați proprietățile ConfirmExit și ConfirmExitMessage pentru a avertiza utilizatorul înainte de închiderea aplicației.

Notă

  • ConfirmExit nu funcționează în aplicațiile încorporate, de exemplu, în Power BI și SharePoint.
  • În prezent, aceste proprietăți pot face referință la controale doar în primul ecran dacă funcția de previzualizare Delayed load este activată (comportament implicit pentru aplicațiile noi). Dacă se fac referiri, Power Apps Studio nu afișează o eroare, dar aplicația publicată rezultată nu se deschide în Power Apps Mobile sau într-un browser. Lucrăm activ pentru a elimina această limitare. Între timp, puteți dezactiva Încărcare întârziată în Setări>Caracteristici viitoare (sub Previzualizare).

ConfirmExit

ConfirmExit este o proprietate booleeană care, atunci când are valoarea adevărat, deschide o casetă de dialog de confirmare înainte de închiderea aplicației. În mod implicit, această proprietate are valoarea fals și nu apare nicio casetă de dialog.

În situațiile în care utilizatorul poate avea modificări nesalvate în aplicație, utilizați această proprietate pentru a afișa o casetă de dialog de confirmare înainte de a părăsi aplicația. Utilizați o formulă care poate verifica variabilele și proprietățile controalelor (de exemplu, proprietatea Unsaved a controlului Editare formular).

Caseta de dialog de confirmare apare în orice situație în care datele s-ar putea pierde ca în aceste exemple:

  • Rularea funcției Exit.
  • Dacă aplicația rulează într-un browser:
    • Închiderea browserului sau a filei browserului în care rulează aplicația.
    • Selectarea butonului Back al browserului.
    • Rularea funcției Launch cu LaunchTarget din În sistem propriu.
  • Dacă aplicația rulează în Power Apps Mobil (iOS sau Android):
    • Glisarea pentru a comuta la o altă aplicație din Power Apps Mobile.
    • Selectarea butonului Back pe un dispozitiv Android.
    • Rularea funcției Launch pentru a lansa o altă aplicație proiectată pe pânză.

Aspectul exact al casetei de dialog de confirmare poate varia în funcție de dispozitive și de versiunea Power Apps.

Caseta de dialog de confirmare nu apare în Power Apps Studio.

ConfirmExitMessage

În mod implicit, caseta de dialog de confirmare afișează un mesaj generic, cum ar fi „Este posibil să aveți modificări nesalvate.” în limba utilizatorului.

Utilizați ConfirmExitMessage pentru a specifica un mesaj personalizat în caseta de dialog de confirmare. Dacă această proprietate are valoarea blank, se utilizează valoarea implicită. Mesajele personalizate sunt trunchiate după cum este necesar pentru a se încadra în caseta de dialog de confirmare, deci limitați mesajul la cel mult câteva linii.

Într-un browser, caseta de dialog de confirmare poate apărea cu un mesaj generic de la browser.

Notă

Obiectul aplicației are încă două proprietăți OnMessage și BackEnabled care sunt experimentale. Aceste proprietăți vor fi eliminate din obiectul aplicației în cele din urmă. Vă recomandăm să nu utilizați aceste proprietăți în mediul dvs. de producție.

Exemplu

  1. Creați o aplicație care conține două controale de formular, respectiv AccountForm și ContactForm.

  2. Setați proprietatea ConfirmExit a obiectului Aplicație la această expresie:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Această casetă de dialog apare dacă utilizatorul modifică datele dintr-un formular și încearcă să închidă aplicația fără a salva aceste modificări.

    Caseta de dialog de confirmare generică.

  3. Setați proprietatea ConfirmExitMessage a obiectului Aplicație la această formulă:

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    Această casetă de dialog apare dacă utilizatorul modifică datele din formularul Cont și încearcă să închidă aplicația fără a salva aceste modificări.

    Caseta de dialog de confirmare specifică formularului.

Configurați cheia de instrumentare pentru Application Insights

Pentru a exporta jurnalele de aplicații generate de sistem în Application Insights, trebuie să configurați Cheia de instrumentare pentru aplicația dvs. canvas.

  1. Deschideți aplicația pentru editare în Power Apps Stuido.
  2. Selectați obiectul Aplicație în vizualizarea arborescentă de navigare din stânga.
  3. Introduceți Cheia de instrumentare în panoul de proprietăți.

Dacă datele nu sunt trimise la App Insights, contactați Power Platform administratorul dvs. și verificați dacă App Insights este dezactivat la nivel de locatar.

Proprietatea Formule

Folosiți formule denumite, în proprietatea Formule, pentru a defini o formulă care poate fi reutilizată în aplicația dvs.

În Power Apps, proprietățile de control sunt determinate de formule. De exemplu, pentru a seta culoarea de fundal în mod constant într-o aplicație, puteți seta proprietatea Umplere pentru fiecare la o formulă comună:

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

Cu atât de multe locuri în care poate apărea această formulă, poate lua mult timp și pot apărea erori dacă le actualizați pe toate atunci când este necesară o schimbare. În schimb, puteți crea o variabilă globală în OnStart pentru a seta culoarea o dată, apoi reutilizați valoarea în întreaga aplicație:

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Deși această metodă este mai bună, depinde și de rularea OnStart înainte de stabilirea valorii pentru BGColor . BGColor ar putea fi, de asemenea, manipulat într-un colț al aplicației de care producătorul nu este conștient, o schimbare făcută de altcineva și care poate fi greu de urmărit.

Formulele denumite oferă o alternativă. Așa cum scriem în mod obișnuit control-property = expression, putem scrie, în schimb, denumire = expressie și apoi putem reutiliza denumire în aplicația noastră pentru a înlocui expresia. Definițiile acestor formule sunt făcute în proprietatea Formule:

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Avantajele utilizării formulelor denumite includ:

  • Valoarea formulei este întotdeauna disponibilă. Nu există nicio dependență de sincronizare, nici OnStart care trebuie să ruleze mai întâi, înainte ca valoarea să fie setată, nici un moment în care valoarea formulei este incorectă. Formulele denumite se pot face referire unele la altele în orice ordine, atâta timp cât nu creează o referință circulară. Acestea pot fi calculate în paralel.
  • Valoarea formulei este întotdeauna actualizată. Formula poate efectua un calcul care depinde de proprietățile de control sau de înregistrările bazei de date și, pe măsură ce acestea se modifică, valoarea formulei se actualizează automat. Nu trebuie să actualizați manual valoarea, așa cum faceți cu o variabilă. Iar formulele se recalculează doar când este nevoie.
  • Definiția formulei este imuabilă. Definiția din Formule este singura sursă de adevăr, iar valoarea nu poate fi schimbată în altă parte în aplicație. Cu variabile, este posibil ca un cod să schimbe în mod neașteptat o valoare, dar acest lucru nu este posibil cu formulele denumite.
  • Calculul formulei poate fi amânat. Deoarece valoarea sa este imuabilă, poate fi întotdeauna calculată atunci când este necesar, ceea ce înseamnă că nu trebuie calculată până când este nevoie. Valorile formulelor care nu sunt utilizate până la screen2 al unei aplicații nu trebuie să fie calculate până când screen2 nu este vizibil. Amânarea acestei lucrări poate îmbunătăți timpul de încărcare a aplicației. Formulele denumite sunt declarative și oferă oportunități sistemului de a optimiza modul și momentul în care sunt calculate.
  • Formule denumite este un concept Excel. Power Fx folosește conceptele Excel acolo unde este posibil, deoarece atât de mulți oameni cunosc bine Excel. Formulele denumite sunt echivalentul celulelor denumite și al formulelor denumite din Excel, gestionate cu Managerul de nume. Acestea se recalculează automat ca o foaie de calcul, la fel ca proprietățile de control.

Formulele denumite sunt definite, una după alta, în proprietatea Formule, fiecare terminându-se cu semnul punct și virgulă. Tipul formulei este dedus din tipurile de expresie, care se bazează pe tipurile de elemente din expresie și pe modul în care sunt utilizate împreună. De exemplu, aceste formule denumite preiau informații utile despre utilizatorul curent de la Dataverse:

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

Dacă formula pentru UserTitle trebuie actualizată, acest lucru se poate face cu ușurință în această locație. Dacă UserPhone nu este necesar în aplicație, atunci aceste apeluri către tabelul Utilizatori din Dataverse nu sunt efectuate. Nu există nicio penalizare pentru includerea unei definiții de formulă care nu este utilizată.

Câteva limitări ale formulelor denumite:

  • Nu pot folosi funcții de comportament sau nu pot provoca efecte secundare în cadrul aplicației.
  • Ei nu pot crea o referință circulară. Nu este permis să aveți a = b; și b = a; în aceeași aplicație.

Proprietatea OnError

Utilizați OnError pentru a lua măsuri după ce a fost detectată o eroare. Oferă o oportunitate globală de a intercepta un banner de eroare înainte de a fi afișat utilizatorului final. De asemenea, poate fi folosit pentru a înregistra o eroare cu funcția Urmărire sau pentru a scrie într-o bază de date sau într-un serviciu web.

Rezultatul fiecărei evaluări a formulei este verificat pentru a detecta o eroare. Dacă există o eroare, OnError va fi evaluată cu aceleași variabile de domeniu FirstError and AllErrors care ar fi fost prezente dacă întreaga formulă ar fi fost înglobată într-o Funcție IfError.

Dacă OnError este goală, se afișează un banner de eroare implicit cu FirstError.Message de eroare. Definirea unei formule OnError inlocuește acest comportament, permițând creatorului să gestioneze raportarea erorilor după cum consideră de cuviință. Comportamentul implicit poate fi solicitat în OnError prin reintroducerea funcția Eroare. Acest lucru este util dacă unele erori urmează să fie filtrate sau tratate într-un mod diferit, în timp ce altele trebuie admise.

OnError nu poate înlocui o eroare în calcule așa cum poate IfError. În momentul în care se invocă OnError, eroarea s-a produs deja și a fost deja procesată prin calcule cu formule. *OnError* controlează numai raportarea erorilor.

Formulele OnError sunt evaluate concomitent și este posibil ca evaluarea lor să se suprapună cu procesarea altor erori. De exemplu, dacă setați o variabilă globală în partea de sus a unei OnError și o citiți mai târziu în aceeași formulă, este posibil ca valoarea să se fi modificat. Utilizați funcția Cu pentru a crea o valoare denumită care este locală formulei.

Deși fiecare eroare este procesată individual de OnError, este posibil ca bannerul de eroare implicit să nu apară pentru fiecare eroare în mod individual. Pentru a evita afișarea a prea multor bannere de eroare în același timp, aceeași eroare nu va declanșa un nou banner de eroare dacă acesta a fost afișat recent.

Exemplu

Luați în considerare un control Etichetă și un control Glisor care sunt legate împreună prin formula:

Label1.Text = 1/Slider1.Value

Controlul etichetei și glisantei limitate prin formula Label1.Text = 1/Slider1.Value.

Glisorul este implicit la 50. Dacă glisorul este mutat la 0, Label1 nu va afișa nicio valoare și va fi afișat un banner de eroare:

Controlul glisorului a fost mutat la 0, rezultând o eroare de împărțire la zero și un banner de eroare.

Să ne uităm la ce s-a întâmplat în detaliu:

  1. Utilizatorul a mutat glisorul spre stânga, iar proprietatea Slide1.Value a fost schimbată la 0.
  2. Label1.Text a fost reevaluată automat. A avut loc împărțirea cu zero, generând o eroare.
  3. Nu există IfError în această formulă. Eroarea de împărțire la zero este returnată de evaluarea formulei.
  4. Label1.Text nu poate afișa nimic pentru această eroare, așa că afișează o stare necompletat.
  5. OnError este invocat. Întrucât nu există o rutină de tratare, bannerul standard de eroare este afișat cu informații despre eroare.

Dacă este necesar, am putea modifica și formula la Label1.Text = IfError( 1/Slider1.Value, 0 ). Acest lucru ar duce la nicio eroare sau banner de eroare. Nu putem schimba valoarea unei erori de la OnError deoarece în acel moment eroarea s-a produs deja, este doar o chestiune ce ține de modul în care va fi raportată.

Dacă adăugăm o rutină de tratare OnError, aceasta nu va avea niciun impact înainte de pasul 5, dar poate afecta modul în care este raportată eroarea:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

Formula App.OnError setată pentru a genera o Urmă.

În acest fel, din perspectiva utilizatorului aplicației, nu va exista nicio eroare. Dar eroarea va fi adăugată la urmărirea Monitorului, împreună cu sursa informațiilor despre eroare de la FirstError:

Controlul glisorului a fost mutat la 0, rezultând o eroare de împărțire la zero, dar niciun banner de eroare.

Dacă dorim să avem și același banner de eroare implicit afișat în plus față de urmărire, putem reintroduce eroarea cu funcția Eroare după apelul Urmărire la fel ca atunci când Urmărire nu s-ar fi aflat acolo:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

Proprietatea OnStart

Notă

Utilizarea proprietății OnStart poate cauza probleme de performanță la încărcarea unei aplicații. Suntem în curs de a crea alternative pentru primele două motive pentru utilizarea proprietății – stocarea în cache a datelor și configurarea variabilelor globale. Am creat deja o alternativă pentru definirea primului ecran cu care să fie afișat Navigate. În funcție de context, această proprietate poate fi dezactivată în mod implicit. Dacă nu îl vedeți și trebuie să îl utilizați, verificați setările avansate ale aplicației pentru un comutator care să o activeze. Poate fi folosită, de asemenea, proprietatea OnVisible a unui ecran.

Proprietatea OnStart rulează atunci când utilizatorul pornește aplicația. Această proprietate este adesea folosită pentru a efectua următoarele sarcini:

  • Preluați și memorați datele din cache în colecții folosind funcția Collect.
  • Configurați variabile globale utilizând funcția Set.

Această formulă este evaluată înainte de afișarea primului ecran. Nu este încărcat niciun ecran, deci nu puteți seta variabile de context cu funcția UpdateContext. Cu toate acestea, puteți transmite variabile de context cu funcția Navigate.

După ce schimbați proprietatea OnStart, testați-o trecând cu mouse-ul peste obiectul Aplicație în panoul Vizualizare arborescentă, selectând elipsa (...), apoi selectând Rulare OnStart. Spre deosebire de situația în care aplicația este încărcată pentru prima dată, colecțiile și variabilele existente vor fi deja setate. Pentru a începe de la colecțiile goale, utilizați funcția ClearCollect în locul funcției Collect.

Meniu de comandă rapidă de element de aplicație pentru Rulare OnStart

Notă

  • Utilizarea funcției Navigate în proprietatea OnStart a fost retrasă. Aplicațiile existente vor continua să funcționeze. Pentru o perioadă limitată de timp, o puteți activa în setările aplicației (disponibil sub Retras). Cu toate acestea, folosirea funcției Navigați în acest mod poate duce la întârzieri în încărcarea aplicației deoarece forțează sistemul să finalizeze evaluarea OnStart înainte de afișarea primului ecran. Utilizați în schimb proprietatea StartScreen pentru a calcula primul ecran afișat.
  • Comutatorul Retras va fi dezactivat pentru aplicațiile create înainte de martie 2021 unde ați adăugat Navigare la OnStart între martie 2021 și prezent. Când editați astfel de aplicații în Power Apps Studio, este posibil să vedeți o eroare. Întoarceți comutatorul Retras menționat mai sus pentru a șterge această eroare.

Proprietate StartScreen

Notă

Proprietatea StartScreen nu va apărea în lista de proprietăți când opțiunea retrasă Bară de formule îmbunătățită este activată. Pentru a dezactiva Bara de formule îmbunătățită , accesați Setări>Caracteristici viitoare>Retras> dezactivați comutatorul Bară de formule îmbunătățită când doriți să utilizați proprietatea StartScreen .

Proprietatea StartScreen determină ce ecran va fi afișat primul. Este evaluat o dată când aplicația este încărcată și returnează obiectul ecranului pentru a fi afișat. În mod implicit, această proprietate va fi goală și primul ecran din vizualizarea Studio Tree este afișat mai întâi.

StartScreen este o proprietate a fluxului de date care nu poate conține funcții de comportament. Toate funcțiile de flux de date sunt disponibile, în special utilizați aceste funcții și semnale pentru a determina ce ecran să afișați primul:

  • Funcția Param pentru citirea parametrilor utilizați pentru pornirea aplicației.
  • Funcția Utilizator pentru citirea informațiilor despre utilizatorul curent.
  • LookUp, Filter, CountRows, Max și alte funcții care citesc dintr-o sursă de date.
  • Orice accesare API printr-un conector, dar aveți grijă ca acesta să revină rapid.
  • Semnale precum Conexiune, Busolă și Aplicație.

Notă

Variabile și colecții globale, inclusiv cele create în OnStart, nu sunt disponibile în StartScreen. Există alternative declarative pentru a face acest lucru, care sunt pe cale să apară. Pentru feedbackul dvs. cu privire la această restricție, accesați Forumul comunității Power Apps.

Dacă StartScreen returnează o eroare, primul ecran din vizualizarea Studio Tree va fi afișat ca și cum StartScreen nu fusese setat. Utilizați funcția IfError pentru a detecta orice erori și a redirecționa către un ecran de eroare corespunzător.

După ce schimbați StartScreen în Studio, testați-o trecând cu mouse-ul peste obiectul Aplicație în panoul Vizualizare arborescentă, selectând elipsa (...), apoi selectând Navigați la StartScreen. Ecranul se va schimba ca și cum aplicația ar fi fost încărcată.

Navigare la StartScreen

Exemple

Screen9

Indică faptul că Screen9 ar trebui să fie afișat mai întâi ori de câte ori pornește aplicația.

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

Verifică dacă Param „mod-admin” a fost setat de utilizator și îl folosește pentru a decide dacă HomeScreen sau AdminScreen ar trebui să fie afișat mai întâi.

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

Verifică dacă un participant la o conferință este membru al personalului și îl direcționează către ecranul corespunzător la pornire.

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

Dirijați aplicația pe baza unei accesări API către ForestScreen sau OceanScreen. Dacă API-ul eșuează din orice motiv, ErrorScreen este folosit în schimb.

Proprietatea StudioVersion

Utilizați proprietatea StudioVersion pentru a afișa sau înregistra versiunea Power Apps Studio care a fost folosită pentru a publica o aplicație. Acest lucru poate fi util la depanare și pentru a vă asigura că aplicația dvs. a fost republicată cu o versiune recentă a Power Apps Studio.

StudioVersion este returnat ca text. Formatul textului se poate schimba în timp și trebuie tratat ca un întreg; evitați extragerea porțiunilor individuale.