Dijeli putem


Objekt aplikacije na platformi Power Apps

Primjenjuje se na sljedeće: Aplikacije radnog područja Aplikacije stvorene prema modelu

Pruža informacije o aplikaciji koja se trenutačno izvršava i kontroli koja nadzire ponašanje aplikacije.

Opis

Poput kontrole, objekt Aplikacija omogućuje svojstva koja identificiraju koji se zaslon prikazuje i traže od korisnika da spremi promjene kako se ne bi izgubile. Svaka aplikacija ima objekt Aplikacija.

Možete napisati formule za neka svojstva objekta Aplikacija. Pri vrhu okna Prikaz stabla odaberite objekt Aplikacija kao što biste bilo koju drugu kontrolu ili zaslon. Pogledajte i uredite jedno od svojstava objekta tako što ćete ga odabrati na padajućem popisu s lijeve strane trake za formule.

Objekt aplikacije u oknu prikaza stabla.

Svojstvo ActiveScreen

Svojstvo ActiveScreen identificira zaslon koji se prikazuje.

Ovo svojstvo vraća objekt zaslona. Koristite ga za referenciranje svojstava trenutno prikazanog zaslona, kao što je naziv s formulom App.ActiveScreen.Name. To svojstvo možete usporediti i s drugim objektom zaslona, primjerice s formulom za usporedbu App.ActiveScreen = Screen2 da biste provjerili je li zaslon2 trenutačno prikazani zaslon.

Upotrijebite funkciju Back ili Navigate za promjenu prikazanog zaslona.

Svojstvo BackEnabled

Svojstvo BackEnabled mijenja način na koji aplikacija reagira na gestu povratka uređaja (prijeđite prstom ili upotrijebite hardverski gumb za povratak na Android uređajima, prijeđite prstom s lijeve strane na iOS uređajima) kada se izvodi na mobilnom uređaju Power Apps . Kada je omogućena, gesta povratka uređaja vraća se na zaslon koji je nedavno prikazan, što je slično formuli Natrag . Kada je onemogućeno, gesta povratka uređaja vraća korisnika na popis aplikacija.

Svojstvo ConfirmExit

Nitko ne želi izgubiti nespremljene promjene. Upotrijebite svojstva ConfirmExit i ConfirmExitMessage koja upozoravaju korisnika prije nego što zatvori aplikaciju.

Napomena

  • ConfirmExit ne radi u aplikacijama koje su ugrađene u, na primjer, Power BI i SharePoint.
  • Trenutačno ta svojstva mogu upućivati na kontrole samo na prvom zaslonu ako je omogućena značajka prikaza Odgođeno učitavanje (što je zadana postavka za nove aplikacije). Ako je upućivanje učinjeno, Power Apps Studio ne prikazuje pogrešku, ali se nastala objavljena aplikacija ne otvara u mobilnoj platformi Power Apps niti u pregledniku. Aktivno radimo na uklanjanju ovog ograničenja. U međuvremenu, možete isključiti Odgođeno učitavanje u odjeljku Postavke>Nadolazeže značajke (u odjeljku Pretpregled).

ConfirmExit

ConfirmExit je logičko svojstvo koje, kada je true, otvara dijaloški okvir za potvrdu prije zatvaranja aplikacije. Prema zadanim postavkama ovo je svojstvo false i ne pojavljuje se dijaloški okvir.

U situacijama kada korisnik možda ima nespremljene promjene u aplikaciji, upotrijebite ovo svojstvo za prikaz dijaloškog okvira za potvrdu prije izlaska iz aplikacije. Upotrijebite formulu koja može provjeriti varijable i svojstva kontrole (na primjer, svojstvo Nespremljen kontrole Edit form).

Potvrdni dijaloški okvir pojavljuje se u bilo kojoj situaciji u kojoj se podatci mogu izgubiti, kao u ovim primjerima:

  • Pokretanje funkcije Exit.
  • Ako se aplikacija pokreće u pregledniku:
    • Zatvaranje preglednika ili kartice preglednika u kojoj se aplikacija izvršava.
    • Odabir gumba u pregledniku za povratak.
    • Izvođenje funkcije Launch uz LaunchTarget Self.
  • Ako je aplikacija pokrenuta na mobilnom uređaju Power Apps (iOS ili Android):
    • Prijeđite prstom kako biste se prebacili na drugu aplikaciju na mobilnoj platformi Power Apps.
    • Odabir gumba za povratak na uređaj s operacijskim sustavom Android.
    • Izvođenje funkcije Launch za pokretanje druge aplikacije radnog područja.

Točan izgled potvrdnog dijaloškog okvira može se razlikovati ovisno o uređajima i verzijama platforme Power Apps.

Potvrdni se dijaloški okvir ne prikazuje na platformi Power Apps Studio.

ConfirmExitMessage

Prema zadanim postavkama potvrdni dijaloški okvir prikazuje generičku poruku, kao što je „Možda imate nespremljene promjene.” na jeziku korisnika.

Upotrijebite ConfirmExitMessage kako biste osigurali prilagođenu poruku u potvrdnom dijaloškom okviru. Ako je ovo svojstvo prazno, upotrebljava se zadana vrijednost. Prilagođene poruke se po potrebi skraćuju kako bi pristajale u potvrdni dijaloški okvir pa neka poruku ima maksimalno nekoliko redaka.

Potvrdni dijaloški okvir može se u pregledniku prikazati uz generičku poruku iz preglednika.

Napomena

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

Primjer

  1. Stvorite aplikaciju koja sadrži dvije kontrole obrasca, AccountForm i ContactForm.

  2. Postavite svojstvo ConfirmExit objekta Aplikacija ovom izrazu:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Ovaj dijaloški okvir pojavljuje se ako korisnik promijeni podatke u bilo kojem obrascu, a zatim pokuša zatvoriti aplikaciju bez spremanja tih promjena.

    Opći dijaloški okvir za potvrdu.

  3. Postavite svojstvo ConfirmExitMessage objekta Aplikacija ovom izrazu:

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

    Ovaj dijaloški okvir pojavljuje se ako korisnik promijeni podatke u obrascu računa, a zatim pokuša zatvoriti aplikaciju bez spremanja tih promjena.

    Dijaloški okvir za potvrdu specifičan za obrazac.

Postavite instrumentacijsku tipku za Application Insights

Da biste izvezli zapisnike Application Insights aplikacija koje generira sustav, morate postaviti instrumentacijski ključ za aplikaciju radnog područja.

  1. Otvorite aplikaciju za uređivanje Power Apps Studio.
  2. Odaberite objekt Aplikacija u lijevom prikazu navigacijskog stabla.
  3. Unesite ključ instrumentacije u oknu svojstava.

Ako se podaci ne šalju u App Insights, obratite se administratoru Power Platform i provjerite je li App Insights onemogućen na razini klijenta.

Svojstvo formule

Upotrijebite imenovane formule u svojstvu Formule da definirate formulu koja se može ponovno upotrijebiti u vašoj aplikaciji.

U aplikaciji Power Apps svojstva kontrole pokreću formule. Na primjer, da biste dosljedno postavili boju pozadine u aplikaciji, možete postaviti svojstvo Ispuna za svaku na zajedničku formulu:

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

Uz toliko mjesta na kojima se ova formula može pojaviti, postaje zamorno i podložno pogreškama ažurirati ih sve ako je potrebna promjena. Umjesto toga, možete stvoriti globalnu varijablu u programu OnStart kako biste jednom postavili boju, a zatim ponovno upotrijebili vrijednost u cijeloj aplikaciji:

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

Iako je ova metoda bolja, ona također ovisi o pokretanju programa OnStart prije nego što se uspostavi vrijednost za BGColor . BGColor se također može manipulirati u nekom kutu aplikacije za koji proizvođač nije svjestan, promjena koju je napravio netko drugi, a kojoj može biti teško ući u trag.

Imenovane formule pružaju alternativu. Kao što obično pišemo kontrola-svojstvo = izraz, umjesto toga možemo napisati naziv = izraz i zatim ponovno upotrijebite naziv u cijeloj našoj aplikaciji za zamjenu izraza. Definicije ovih formula nalaze se u svojstvu Formule:

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

Prednosti korištenja imenovanih formula uključuju:

  • Vrijednost formule je uvijek dostupna. Ne postoji vremenska ovisnost, nema programa OnStart koji se mora pokrenuti prvi prije postavljanja vrijednosti, nema vremena u kojem je vrijednost formule netočna. Imenovane formule mogu se odnositi jedna na drugu bilo kojim redoslijedom, sve dok ne stvaraju kružnu referencu. Mogu se računati paralelno.
  • Vrijednost formule je uvijek ažurirana. Formula može izvesti izračun koji ovisi o svojstvima kontrole ili zapisima baze podataka, a kako se oni mijenjaju, vrijednost formule se automatski ažurira. Ne morate ručno ažurirati vrijednost kao što to radite s varijablom. A formule ponovno izračunavaju samo kada je to potrebno.
  • Definicija formule je nepromjenjiva. Definicija u odjeljku Formule jedini je izvor istine i vrijednost se ne može promijeniti negdje drugdje u aplikaciji. S varijablama je moguće da neki kod neočekivano promijeni vrijednost, ali to nije moguće s imenovanim formulama.
  • Izračun formule može se odgoditi. Budući da je njegova vrijednost nepromjenjiva, uvijek se može izračunati kada je potrebno, što znači da se ne mora izračunavati dok nije potrebna. Vrijednosti formule koje se ne koriste dok se ne prikaže screen2 aplikacije ne moraju se izračunati dok screen2 ne bude vidljiv. Odgoda ovog rada može poboljšati vrijeme učitavanja aplikacije. Imenovane formule su deklarativne i pružaju mogućnosti sustavu da optimizira kako i kada se izračunavaju.
  • Imenovane formule koncept su programa Excel. Power Fx upotrebljava koncepte programa Excel gdje je to moguće jer puno ljudi dobro poznaje Excel. Imenovane formule ekvivalent su imenovanih ćelija i imenovanih formula u programu Excel kojima se upravlja pomoću upravitelja naziva. Oni se automatski ponovno izračunavaju poput proračunske tablice, baš kao što to čine kontrolna svojstva.

Imenovane formule definirane su jedna za drugom u svojstvu Formule, a svaka završava točkom sa zarezom. Tip formule se zaključuje iz tipova izraza, koji se temelji na tipovima elemenata unutar izraza i načinu na koji se upotrebljavaju zajedno. Na primjer, ove imenovane formule dohvaćaju korisne informacije o trenutačnom 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 formulu za UserTitle treba ažurirati, to se može lako učiniti na ovom jednom mjestu. Ako UserPhone nije potreban u aplikaciji, tada se ti pozivi tablici Korisnici na usluzi Dataverse ne upućuju. Nema kazne za uključivanje definicije formule koja se ne upotrebljava.

Neka ograničenja imenovanih formula:

  • Ne mogu upotrebljavati funkcije ponašanja niti na drugi način uzrokovati nuspojave unutar aplikacije.
  • Ne mogu stvoriti kružnu referencu. Nije dozvoljeno imati a = b; i b = a; u istoj aplikaciji.

Svojstvo OnError

Upotrijebite OnError za poduzimanje radnji nakon otkrivanja greške. Omogućuje globalnu priliku za presretanje natpisa pogreške prije nego što se prikaže krajnjem korisniku. Također se može koristiti za bilježenje pogreške s funkcijom Trace ili pisanje u bazu podataka ili web-uslugu.

Rezultat svake procjene formule provjerava ima li grešaka. Ako se radi o pogrešci, OnError bit će procijenjen s istim varijablama djelokruga FirstError i AllErrors koje bi bile prisutne da je cijela formula bila omotana u funkciju IfError.

Ako je OnError prazan, prikazan je zadani natpis pogreške s porukom FirstError.Message greške. Definiranje formule OnError poništava ovo ponašanje omogućujući autoru da postupa s izvješćivanjem o pogrešci onako kako smatra prikladnim. Zadano ponašanje može se zahtijevati u formuli OnError tako da se ponovno prikaže pogreška s funkcijom Error. Ovo je korisno ako se neke pogreške trebaju filtrirati ili obrađivati na drugačiji način, dok se druge trebaju propustiti.

OnError ne može zamijeniti pogrešku u izračunima na način na koji to može IfError . U trenutku kada je OnError pozvan, pogreška se već dogodila i već je obrađena pomoću izračuna formule. *OnError* kontrolira samo izvješćivanje o pogreškama.

Formule OnError procjenjuju se istodobno i moguće je da se njihova procjena može preklapati s obradom drugih pogrešaka. Na primjer, ako postavite globalnu varijablu na vrh OnError i pročitate je kasnije u istoj formuli, vrijednost se možda promijenila. Upotrijebite funkciju With za stvaranje imenovane vrijednosti koja je lokalna za formulu.

Iako svaku pogrešku pojedinačno obrađuje OnError, zadana oznaka pogreške možda se neće pojaviti za svaku pogrešku pojedinačno. Kako bi se izbjeglo istovremeno prikazivanje previše natpisa pogreške, ista pogreška neće pokrenuti novi natpis pogreške ako je nedavno prikazan.

Primjer

Uzmite u obzir kontrolu Oznaka i kontrolu Klizač koje su povezane formulom:

Label1.Text = 1/Slider1.Value

Kontrola oznake i klizača vezana je kroz formulu Label1.Text = 1/Slider1.Value.

Klizač se prema zadanim postavkama vraća na 50. Ako se klizač pomakne na 0, Label1 neće prikazivati nikakvu vrijednost i prikazuje se natpis pogreške:

Kontrola klizača pomaknuta je na 0, što je rezultiralo pogreškom dijeljenja s nulom i natpisom pogreške.

Pogledajmo detaljnije što se dogodilo:

  1. Korisnik je pomaknuo slajd ulijevo i svojstvo Slide1.Value promijenilo se u 0.
  2. Oznaka1.Tekst je automatski ponovno procijenjen. Došlo je do dijeljenja s nulom, generirajući pogrešku.
  3. Ne postoji IfError u ovoj formuli. Pogreška dijeljenja s nulom vraća se procjenom formule.
  4. Oznaka1.Tekst ne može prikazati ništa za ovu pogrešku, pa prikazuje prazno stanje.
  5. Poziva se OnError . Budući da nema obrađivača, prikazuje se standardni natpis pogreške s informacijama o pogrešci.

Ako je potrebno, možemo također modificirati formulu u Label1.Text = IfError( 1/Slider1.Value, 0 ). To ne bi rezultiralo pogreškom ili natpisom pogreške. Ne možemo promijeniti vrijednost pogreške iz OnError jer se u tom trenutku pogreška već dogodila, samo je pitanje kako će biti prijavljena.

Ako dodamo rukovatelja OnError, to neće imati utjecaja prije koraka 5, ali može utjecati na način na koji se pogreška prijavljuje:

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

App.OnError formula postavljena za generiranje traga.

Uzimajući to u obzir iz perspektive korisnika aplikacije, neće biti nikakve pogreške. Ali pogreška će biti dodana praćenju Monitora, zajedno s izvorom informacija o pogrešci iz formule FirstError:

Kontrola klizača pomaknuta je na 0, što je rezultiralo pogreškom dijeljenja s nulom, ali bez natpisa pogreške.

Ako također želimo imati isti zadani natpis pogreške prikazan uz praćenje, možemo ponovno prikazati pogrešku s funkcijom Error nakon poziva Trace kao što bi bio da Trace nije bio tamo:

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

Svojstvo OnStart

Napomena

Upotreba svojstva OnStart može prouzročiti probleme u izvedbi prilikom učitavanja aplikacije. U procesu smo stvaranja alternativa za prva dva razloga za upotrebu podataka predmemoriranja svojstva i postavljanje globalnih varijabli. Već smo stvorili alternativu za definiranje prvog zaslona koji će se prikazati za Navigate. Ovisno o kontekstu, to svojstvo može biti onemogućeno prema zadanim postavkama. Ako ga ne vidite, a trebate ga koristiti, potražite mogućnost uključivanja u naprednim postavkama aplikacije da biste ga omogućili. Također se može koristiti svojstvo zaslona OnVisible.

Svojstvo OnStart izvodi se kada korisnik pokrene aplikaciju. Ovo svojstvo često se upotrebljava za obavljanje sljedećih zadataka:

  • Dohvaćanje i predmemoriranje podataka u zbirke s pomoću funkcije Collect.
  • Postavljanje globalnih varijabli s pomoću funkcije Set.

Ova se formula procjenjuje prije pojavljivanja prvog zaslona. Nije učitan nijedan zaslon pa ne možete postaviti varijable konteksta s pomoću funkcije UpdateContext. Međutim, varijable konteksta možete proslijediti s pomoću funkcije Navigate.

Nakon promjene svojstva OnStart testirajte ga zadržavajući pokazivač iznad objekta Aplikacije u oknu Prikaz stabla, odabirom trotočke (...), a zatim odabirom svojstva Run OnStart. Za razliku od trenutka kada se aplikacija učita prvi put, postojeće zbirke i varijable već će biti postavljene. Kako biste započeli s praznim zbirkama, upotrijebite funkciju ClearCollect umjesto funkcije Collect.

Izbornik prečaca stavke aplikacije za Run OnStart

Napomena

  • Funkcija Navigate u svojstvu u OnStart više se ne primjenjuje. Postojeće aplikacije nastavit će raditi. Na ograničeno vrijeme još uvijek je možete omogućiti u postavkama aplikacije (dostupno pod Otpisano). Međutim, ako funkciju Navigacija upotrebljavate na taj način, može doći do kašnjenja učitavanja aplikacije, jer prisiljava sustav na dovršetak evaluacije svojstva OnStart prije prikaza prvog zaslona. Umjesto toga, upotrijebite svojstvo StartScreen za izračunavanje prvog prikazanog zaslona.
  • Povučeni prekidač bit će isključen za aplikacije izrađene prije ožujka 2021. u kojima ste dodali opciju Navigacija na Uključeni početak između ožujka 2021. i sada. Kada uređujete takve aplikacije na usluzi Power Apps Studio, možda ćete vidjeti pogrešku. Okrenite prethodno navedeni gumb za prebacivanje Otpisano da biste izbrisali tu pogrešku.

Svojstvo StartScreen

Napomena

Svojstvo StartScreen neće se pojaviti na popisu svojstava kada je uključena povučena mogućnost Poboljšana traka formule. Da biste isključili opciju Poboljšana traka s formulama otvorite Postavke>Nadolazeće značajke>Povučeno> isključite gumb Poboljšana traka s formulama kad želite upotrijebiti svojstvo StartScreen.

Svojstvo StartScreen određuje koji će se zaslon prvi prikazati. Ocjenjuje se nakon što se aplikacija učita i vraća objekt zaslona za prikaz. Prema zadanim postavkama, to će svojstvo biti prazno, a naprije će se prikazati prvi zaslon iz prikaza stabla.

StartScreen je svojstvo protoka podataka koje ne može sadržavati funkcije ponašanja. Dostupne su sve funkcije protoka podataka. Te funkcije i signale koristite u prvom redu da odredite koji će se zaslon prvi prikazati:

  • Param funkcija za čitanje parametara koji se koriste za pokretanje aplikacije.
  • Korisnička funkcija za čitanje informacija o trenutnom korisniku.
  • LookUp, Filter, CountRows, Max i druge funkcije koje čitaju iz izvora podataka.
  • Svi API pozivi putem poveznika, ali pazite da se brzo vraćaju.
  • Signali kao što su Connection, Compass i App.

Napomena

Globalne varijable i zbirke, uključujući one koje su stvorene u svojstvu OnStart, nisu dostupne u svojstvu StartScreen. Postoje deklarativne alternative za to koje su trenutačno u izvedbi. Za povratne informacije o ovom ograničenju idite na forum zajednice za Power Apps.

Ako StartScreen vraća pogrešku, prvi zaslon u prikazu Studio Tree bit će prikazan kao da svojstvo StartScreen nije bilo postavljeno. Upotrijebite funkciju IfError za evidentiranje svih pogrešaka i preusmjeravanje na odgovarajući zaslon pogreške.

Nakon što promijenite svojstvo StartScreen u Studiju, testirajte ga tako da zadržite pokazivač miša iznad objekta Aplikacija u oknu Prikaz stabla, odaberite tri točke (...), a zatim odaberite Idi na StartScreen. Zaslon će se promijeniti kao da je aplikacija učitana.

Navigacija na StartScreen

Primjeri

Screen9

Ukazuje na to da se Screen9 treba prvo prikazati kad god se aplikacija pokrene.

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

Provjerava je li korisnik postavio parametar "admin-mode" i koristi ga kako bi odlučio hoće li se prvo prikazati HomeScreen ili AdminScreen.

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

Provjerava je li sudionik konferencije član osoblja i usmjerava ga na odgovarajući zaslon pri pokretanju.

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

Usmjerava aplikaciju na temelju API poziva na ForestScreen ili OceanScreen. Ako API iz bilo kojeg razloga ne uspije, koristi se ErrorScreen.

Svojstvo StudioVersion

Upotrijebite svojstvo StudioVersion da biste prikazali ili zapisali verziju koja je korištena Power Apps Studio za objavljivanje aplikacije. To može biti korisno prilikom otklanjanja pogrešaka i kako biste bili sigurni da je vaša aplikacija ponovno objavljena s nedavnom verzijom Power Apps Studio.

StudioVersion se vraća kao tekst. Format teksta može se s vremenom mijenjati i treba ga tretirati kao cjelinu; izbjegavajte vađenje pojedinačnih porcija.