Deli putem


Objekt App u usluzi Power Apps

Važi za: Canvas aplikacije Model-driven aplikacije

Pruža informacije o trenutno pokrenutoj aplikaciji i kontrolu nad njenim ponašanjem.

Opis

Kao kontrola, objekat App pruža svojstva koja identifikuju koji se ekran prikazuje i koji traže od korisnika da sačuva promene tako da se ne izgube. Svaka aplikacija ima objekat App.

Možete da pišete formule za neka svojstva objekta App. Na vrhu okna Prikaz stabla, izaberite objekat App kao što biste izabrali bilo koju drugu kontrolu ili ekran. Prikažite i uredite jedno od svojstava objekta tako što ćete ga odabrati na padajućoj listi na levoj strani trake za formule.

Objekat

Svojstvo ActiveScreen

Svojstvo ActiveScreen identifikuje ekran koji se prikazuje.

Ovo svojstvo vraća objekat ekrana. Koristite ga za referencisanje svojstava trenutno prikazanog ekrana, kao što je ime sa formulom App.ActiveScreen.Name. Ovo svojstvo možete da uporedite i sa drugim objektom ekrana, na primer sa formulom za poređenje App.ActiveScreen = Screen2 da biste testirali da li je Screen2 trenutno prikazan ekran.

Koristite funkciju Back ili Navigate za promenu ekrana koji se prikazuje.

Svojstvo "BackEnabled" ("BackEnabled"

Svojstvo BackEnabled menja način na koji aplikacija reaguje na pokret leđa uređaja (brzo prevucite ili koristite dugme hardvera nazad na uređajima , brzo prevucite Android sleva na uređaje) kada tokom pokretanja u mobilnom telefonu iOS Power Apps . Kada je omogućen, pokret unazad uređaja se vraća na ekran koji je poslednji put prikazan, što je slično formuli "Nazad ". Kada je onemogućen, pokret "nazad" uređaja vraća korisnika na listu aplikacija.

Svojstva ConfirmExit

Niko ne želi da izgubi nesačuvane promene. Koristite svojstva ConfirmExit i ConfirmExitMessage kako biste upozorili korisnika pre nego što zatvori vašu aplikaciju.

Belešku

  • ConfirmExit ne radi u aplikacijama koje su ugrađene, na primer, u Power BI i SharePoint.
  • Trenutno ova svojstva mogu da referenciraju kontrole samo na prvom ekranu ako je omogućena funkcija pregleda Odloženo opterećenje (što je podrazumevano za nove aplikacije). Ako se navode reference, Power Apps Studio ne prikazuje grešku, ali rezultujuća objavljena aplikacija se ne otvara u aplikaciji Power Apps Mobile ili pregledaču. Aktivno radimo na uklanjanju ovog ograničenja. U međuvremenu možete da isključite opciju Odloženo otpremanje u meniju Postavke>Predstojeće funkcije (u okviru stavke Pregled).

ConfirmExit

ConfirmExit je logičko svojstvo koje, kada je tačno, otvara dijalog za potvrdu pre nego što se aplikacija zatvori. Podrazumevana vrednost ovog svojstva je netačno i ne prikazuje se nijedan dijalog.

U situacijama kada korisnik možda ima nesačuvane promene u aplikaciji, koristite ovo svojstvo da biste prikazali dijalog za potvrdu pre izlaska iz aplikacije. Koristite formulu koja može da proveri promenljive i kontroliše svojstva (na primer, svojstvo Unsaved kontrole obrazac za uređivanje).

Dijalog za potvrdu pojavljuje se u svakoj situaciji u kojoj se podaci mogu izgubiti, kao u sledećim primerima:

  • Pokrenuta je funkcija Exit.
  • Ako je aplikacija pokrenuta u pregledaču:
    • Zatvaranje pregledača ili kartice pregledača u kojoj je aplikacija pokrenuta.
    • Odabir dugmeta za povratak u pregledaču.
    • Pokrenite funkciju Launch čije svojstvo LaunchTarget ima vrednost Self.
  • Ako je aplikacija pokrenuta u programu Power Apps Mobile (iOS ili Android):
    • Prevlačenje da biste se prebacili na drugu aplikaciju na platformi Power Apps Mobile.
    • Odabir dugmeta za povratak na Android uređaju.
    • Pokrenite funkciju Launch da biste pokrenuli drugu aplikaciju sa podlogom.

Tačan izgled dijaloga za potvrdu može se razlikovati ovisno o uređajima i verzijama usluge Power Apps.

Dijalog za potvrdu se ne prikazuje u programu Power Apps Studio.

ConfirmExitMessage

Podrazumevano, dijalog za potvrdu prikazuje generičku poruku, kao što je „Možda imate nesačuvane promene.“ na jeziku korisnika.

Koristite ConfirmExitMessage da u dijalogu za potvrdu navedete prilagođenu poruku. Ako je ovo svojstvo prazno, koristi se podrazumevana vrednost. Prilagođene poruke se skraćuju po potrebi da bi se uklopile u dijalog za potvrdu, pa zadržite poruku do najviše nekoliko redova.

U pregledaču se dijalog za potvrdu može prikazati sa generičkom porukom iz pregledača.

Belešku

Objekat aplikacije ima još dva svojstva OnMessage i BackEnabled koja su eksperimentalna. Ova svojstva će na kraju biti uklonjena iz objekta aplikacije. Preporučujemo da ne koristite ova svojstva u vašem proizvodnom okruženju.

Primer

  1. Kreirajte aplikaciju koja sadrži dve kontrole obrasca, AccountForm i ContactForm.

  2. Podesite svojstvo ConfirmExit objekta App na ovaj izraz:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Ovaj dijalog se prikazuje ako korisnik promeni podatke u bilo kom obrascu, a zatim pokušava da zatvori aplikaciju bez čuvanja tih promena.

    Dijalog generičke potvrde.

  3. Podesite svojstvo ConfirmExitMessage objekta App prema ovoj formuli:

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

    Ovaj dijalog se prikazuje ako korisnik promeni podatke u obrascu Poslovni kontakt, a zatim pokušava da zatvori aplikaciju bez čuvanja tih promena.

    Dijalog za potvrdu specifičn za obrazac.

Taster za instrumentaciju instalacije za Application Insights

Da biste izvezli sistemski generisane evidencije aplikacija Application Insights, potrebno je da podesite taster Instrumentation za aplikaciju podloge za podlogu.

  1. Otvorite aplikaciju za uređivanje . Power Apps Studio
  2. Izaberite objekat aplikacije u levom prikazu navigacionog stabla.
  3. Unesite taster Instrumentation u okno sa svojstvima.

Ako se podaci ne šalju programu App Insights, obratite se administratoru Power Platform i proverite da li je app Insights onemogućen na nivou zakupca.

Svojstvo „Formulas“

Koristite imenovane formule u svojstvu Formulas da biste definisali formulu koja se može ponovo koristiti u celoj aplikaciji.

U usluzi Power Apps, svojstva kontrole se pokreću formulama. Na primer, da biste dosledno podesili boju pozadine u aplikaciji, svojstvo Fill za svaku možete da postavite na uobičajenu formulu:

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

Sa toliko mesta na kojima se ova formula može pojaviti, postaje zamorno i podložno greškama da ih sve ažurira ako je potrebna promena. Umesto toga, možete da kreirate globalnu promenljivu u OnStart da biste jednom podesili boju, a zatim ponovo koristili vrednost u celoj aplikaciji:

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

Iako je ova metoda bolja, ona zavisi i od pokretanja OnStart pre nego što se utvrdi vrednost za BGColor. BGColor takođe može manipulisati u nekom kutku aplikacije kojeg autor nije svestan, promenom koju je napravio neko drugi, a tome se teško može ući u trag.

Imenovane formule pružaju alternativu. Kao što obično pišemo svojstvo-kontrole = izraz, tako možemo da napišemo i ime = izraz, a zatim da ponovo koristimo ime u celoj aplikaciji da bismo zamenili izraz. Definicije ovih formula se rade u svojstvu Formulas:

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

Prednosti korišćenja imenovanih formula uključuju:

  • Vrednost formule je uvek dostupna. Ne postoji zavisnost od vremenskog rasporeda, ne postoji OnStart koji mora da se pokrene prvi pre nego što se vrednost postavi, nema vremena u kojem je vrednost formule netačna. Imenovane formule mogu da se odnose jedna na drugu bilo kojim redosledom, sve dok ne kreiraju kružnu referencu. Mogu se izračunavati paralelno.
  • Vrednost formule je uvek ažurna. Formula može da izvrši izračunavanje koje zavisi od svojstava kontrole ili zapisa baze podataka, a kako se menjaju, vrednost formule se automatski ažurira. Nije potrebno da ručno ažurirate vrednost kao što to radite sa promenljivom. A formule se ponovo izračunavaju samo kada je to potrebno.
  • Definicija formule je nepromenljiva. Definicija u svojstvu Formulas je jedan izvor istine i vrednost se ne može promeniti negde drugde u aplikaciji. Pomoću promenljivih, moguće je da neki kôd neočekivano promeni vrednost, ali to nije moguće sa imenovanim formulama.
  • Izračunavanje formule se može odložiti. Pošto je njegova vrednost nepromenljiva, uvek može da se izračuna kada je to potrebno, što znači da je ne treba izračunavati dok ne bude potrebna. Vrednosti formule koje se ne koriste dok se ne prikaže screen2 aplikacije ne moraju biti izračunate dok screen2 ne bude vidljiv. Odlaganje ovog rada može poboljšati vreme učitavanja aplikacija. Imenovane formule su deklarativne i pružaju mogućnosti sistemu da optimizuje način i kada će biti izračunat.
  • Imenovane formule su Excel koncept. Power Fx koristi Excel koncepte tamo gde je to moguće pošto toliko ljudi dobro poznaje Excel. Imenovane formule su ekvivalent imenovanih ćelija i imenovanih formula u programu Excel, kojima se upravlja pomoću upravljača imenom. Ponovo se izračunavaju automatski kao unakrsna tabela, kao što to rade svojstva kontrole.

Imenovane formule se definišu, jedna za drugom u svojstvu Formulas, a svaka se završava tačkom i zarezom. Tip formule je zaključno sa tipovima izraza koji se zasnivaju na tipovima elemenata unutar izraza i načinu na koji se oni koriste zajedno. Na primer, ove imenovane formule preuzimaju korisne informacije o trenutnom korisniku iz usluge 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' );

Ako je potrebno ažurirati formulu za UserTitle, to se može lako uraditi na ovoj jednoj lokaciji. Ako UserPhone nije potreban u aplikaciji, onda ovi pozivi u tabeli Korisnici u usluzi Dataverse nisu upućeni. Ne postoji kazna za uključivanje definicije formule koja se ne koristi.

Neka ograničenja imenovanih formula:

  • Oni ne mogu da koriste funkcije ponašanja ili da na neki drugi način izazovu bočne efekte unutar aplikacije.
  • Ne mogu da kreiraju kružnu referencu. Imati a = b; i b = a; u istoj aplikaciji nije dozvoljeno.

Svojstvo „OnError“

Koristite OnError da biste preduzeli radnju nakon što je otkrivena greška. On pruža globalnu mogućnost da presretnete reklamni natpis greške pre nego što bude prikazan krajnjem korisniku. Takođe se može koristiti za evidentiranje greške pomoću funkcije Trace ili za pisanje u bazu podataka ili veb-uslugu.

Rezultat svake procene formula je proveren za grešku. Ako postoji greška, OnError biti procenjen istim promenljivim opsega FirstError and AllErrors koje bi bile prisutne da je cela formula bila upakovana u funkciju IfError function.

Ako je OnError prazno, prikazuje se podrazumevani baner sa porukom greške FirstError.Message. Definisanje formule OnError zamenjuje ovo ponašanje omogućavajući autoru da rukuje izveštavanjem o greškama onako kako mu odgovara. Podrazumevano ponašanje se može zahtevati u događaju OnError tako što ćete ponovo izbaciti grešku funkcijom Error. Ovo je korisno ako se neke greške filtriraju ili rešavaju na drugačiji način, dok druge treba da se prosleđuju.

OnError ne može da zameni grešku u izračunavanjima na način na koji to može IfError. U trenutku kada je pozvan OnError, greška se već dogodila i ona je već obrađena kroz izračunavanja formula. *OnError* kontroliše samo izveštavanje o greškama.

OnError formule se istovremeno izračunavaju i moguće je da se njihovo izračunavanje preklapa sa obradom drugih grešaka. Na primer, ako postavite globalnu promenljivu povrh događaja OnError i kasnije je pročitate u istoj formuli, vrednost se možda promenila. Koristite funkciju With da biste kreirali imenovanu vrednost koja je lokalna za formulu.

Iako OnError svaku grešku obrađuje pojedinačno, podrazumevani baner greške se možda neće pojaviti za svaku grešku pojedinačno. Da biste izbegli da istovremeno bude prikazano previše banera sa greškama, ista greška neće pokrenuti novi baner greške ako je nedavno prikazan.

Primer

Razmotrite kontrolu Label i kontrolu Slider koje su povezane formulom:

Label1.Text = 1/Slider1.Value

Kontrola oznake i klizača povezana formulom Oznaka1.Tekst = 1/Slider1.Value.

Podrazumevana vrednost klizača je 50. Ako se klizač pomeri na 0, Label1 neće pokazati vrednost, a prikazuje se i baner sa greškom:

Kontrola klizača je premeštena na 0, što je rezultiralo deljenjem nulom greškom i reklamnim natpisom greške.

Pogledajmo detaljno šta se desilo:

  1. Korisnik je pomerio klizač nalevo, a svojstvo Slide1.Value je promenjeno u 0.
  2. Label1.Text se automatski ponovo izračunava. Došlo je do deljenja nulom, što je izazvalo grešku.
  3. Ne postoji IfError u ovoj formuli. Izračunavanje formule vraća grešku deljenja nulom.
  4. Label1.Text ne može da prikaže ništa za ovu grešku, tako da prikazuje status blank.
  5. OnError je pozvan. Pošto nema rukovaoca, prikazuje se standardni baner greške sa informacijama o grešci.

Ako je potrebno, mogli bismo da izmenimo i formulu na Label1.Text = IfError( 1/Slider1.Value, 0 ). To ne bi rezultiralo greškom ili banerom greške. Ne možemo da promenimo vrednost greške iz OnError pošto se u tom trenutku greška već dogodila, samo je pitanje kako će biti prijavljena.

Ako dodamo rukovalac OnError, on neće imati uticaja pre 5. koraka, ali može da utiče na način prijavljivanja greške:

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

Formula App.OnError podešena da generiše praćenje.

Sa ovim na mestu, iz perspektive korisnika aplikacije, neće biti greške. Međutim, greška će biti dodata u praćenje nadgledanja, upotpunjena izvorom informacija o grešci iz FirstError:

Kontrola klizača je premeštena na 0, što je rezultiralo deljenjem nulom greškom, ali nije bilo reklamnog natpisa sa greškama.

Ako smo takođe želeli da pored praćenja prikažemo isti podrazumevani baner greške, možemo ponovo da prikažemo grešku pomoću funkcije Error nakon poziva Trace, kao da funkcija Trace nije bila tamo:

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

Svojstvo OnStart

Belešku

Korišćenje svojstva OnStart može dovesti do problema sa performansama prilikom učitavanja aplikacije. U procesu smo kreiranja alternativa iz prva dva razloga za korišćenje svojstva – keširanje podataka i podešavanje globalnih promenljivih. Već smo kreirali alternativu za definisanje prvog ekrana koji će biti prikazan pomoću funkcije Navigate. U zavisnosti od vašeg konteksta, ovo svojstvo može biti podrazumevano onemogućeno. Ako ga ne vidite i morate da ga koristite, pogledajte napredne postavke aplikacije da biste ga omogućili. Takođe možete koristiti svojstvo ekrana OnVisible.

Svojstvo OnStart se pokreće kada korisnik pokrene aplikaciju. Ovo svojstvo se često koristi za izvršavanje sledećih zadataka:

  • Preuzimanje i keširanje podataka u kolekcijama pomoću funkcije Collect.
  • Podesite globalne promenljive koristeći funkciju Set.

Ova formula se izračunava pre nego što se pojavi prvi ekran. Ne učitava se nijedan ekran, tako da ne možete postaviti kontekstne promenljive funkcijom UpdateContext. Međutim, možete proslediti promenljive konteksta pomoću funkcije Navigate.

Kada promenite svojstvo OnStart, testirajte ga tako što ćete zadržati pokazivač nad objektom App u oknu prikaza stabla, izabrati tri tačke (...), a zatim izabrati stavku Pokreni OnStart. Za razliku od prvog učitavanja aplikacije, postojeće kolekcije i promenljive će već biti postavljene. Da biste započeli sa praznim kolekcijama, koristite funkciju ClearCollect umesto funkcije Collect.

Skraćeni meni sa stavkom App za Run OnStart

Belešku

  • Korišćenje funkcije Navigate u svojstvu OnStart je obustavljeno. Postojeće aplikacije će nastaviti da rade. U ograničenom vremenskom periodu i dalje možete da ga omogućite u postavkama aplikacije (dostupno u okviru stavke Obustavljeno). Međutim, korišćenje funkcije Navigate na ovaj način može dovesti do kašnjenja učitavanja aplikacija jer primorava sistem da dovrši procenu svojstva OnStart pre prikazivanja prvog ekrana. Umesto toga koristite svojstvo StartScreen da biste izračunali prikazani prvi ekran.
  • Obustavljeni prekidač će biti isključen za aplikacije kreirane pre marta 2021. godine gde ste dodali funkciju Navigate svojstvu OnStart između marta 2021. i sada. Kada uređujete takve aplikacije u programu Power Apps Studio, možda ćete videti grešku. Uključite gorepomenuti prekidač Obustavljeno da biste obrisali ovu grešku.

Svojstvo StartScreen

Belešku

Svojstvo StartScreen se neće prikazati na listi svojstava kada je uključena povučena opcija Poboljšana traka formula. Da biste isključili Poboljšanu traku formula, idite na Postavke>Predstojeće funkcije>Povučeno> isključite prekidač Poboljšana traka formula kada poželite da koristite svojstvo StartScreen.

Svojstvo StartScreen određuje koji će ekran prvo biti prikazan. Procenjuje se jednom kada se aplikacija učita i vraća objekat ekrana koji će biti prikazan. Ovo svojstvo će podrazumevano biti prazno, a prvo će biti prikazan prvi ekran u prikazu stabla u programu Studio.

StartScreen je svojstvo toka podataka koje ne može da sadrži funkcije ponašanja. Sve funkcije toka podataka su dostupne, posebno koristite ove funkcije i signale da biste odredili koji ekran prvo treba prikazati:

  • Param – funkcija za čitanje parametara koji se koriste za pokretanje aplikacije.
  • User – funkcija za čitanje informacija o trenutnom korisniku.
  • LookUp, Filter, CountRows, Max i druge funkcije koje se čitaju iz izvora podataka.
  • Svaki API poziva preko konektora, ali obratite pažnju da se brzo vraća.
  • Signali kao što su Connection, Compass i App.

Belešku

Globalne promenljive i kolekcije, uključujući one kreirane u svojstvu OnStart, nisu dostupne u svojstvu StartScreen. Uskoro će na raspolaganju biti deklarativne alternative da uradite ovo. Za povratne informacije o ovom ograničenju, posetite forum Power Apps zajednice.

Ako StartScreen vrati grešku, prvi ekran u prikazu stabla u programu Studio biće prikazan kao da svojstvo StartScreen nije postavljeno. Koristite funkciju IfError da biste uhvatili greške i preusmerili se na odgovarajući ekran greške.

Kada promenite svojstvo StartScreen u programu Studio, testirajte ga tako što ćete zadržati pokazivač nad objektom App u oknu Prikaz stabla, izabrati tri tačke (...), a zatim izabrati stavku Idi na StartScreen. Ekran će se promeniti kao da je aplikacija učitana.

Kretanje do StartScreen

Primeri

Screen9

Označava da bi Screen9 trebalo da se prikaže prvi svaki put kada se aplikacija pokrene.

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

Proverava da li je korisnik podesio parametar „admin-mode“ i koristi ga da bi odlučio da li prvo treba da se prikaže HomeScreen ili AdminScreen.

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

Proverava da li je učesnik konferencije član osoblja i usmerava ih na odgovarajući ekran pri pokretanju.

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

Usmerava aplikaciju zasnovanu na API pozivu ForestScreen ili OceanScreen. Ako API ne uspe iz bilo kog razloga, umesto toga se koristi ErrorScreen.

Svojstvo "StudioVersion" ("StudioVersion"

Koristite svojstvo StudioVersion da biste prikazali ili evidentirali verziju Power Apps Studio koja je korišćena za objavljivanje aplikacije. Ovo može biti korisno prilikom otklanjanja grešaka i da se uverite da je aplikacija ponovo objavljena sa nedavno objavljenom verzijom Power Apps Studio.

StudioVersion se vraća kao tekst. Format teksta se može vremenom promeniti i treba ga tretirati kao celinu; izbegavajte izdvajanje pojedinačnih porcija.