App-objekt i Power Apps

Gælder for: Lærredapps Modelbaserede apps

Indeholder oplysninger om den app, der kører i øjeblikket og gør det muligt at styre appens funktionsmåde.

Beskrivelse

På samme måde som et kontrolelement indeholder objektet App egenskaber, der identificerer, hvilke skærmbilleder der vises, og som beder brugeren om at gemme ændringerne, så de ikke går tabt. Alle apps har et objekt af typen App.

Du kan skrive formler til visse egenskaber for App-objektet. Vælg objektet App øverst i ruden Trævisning på samme måde som andre kontrolelementer eller skærmbilleder. Du kan få vist og redigere en af objektets egenskaber ved at vælge den på rullelisten til venstre for formellinjen.

Objektet App i ruden Trævisning.

Egenskaben ActiveScreen

Egenskaben ActiveScreen identificerer det viste skærmbillede.

Denne egenskab returnerer et skærmobjekt. Brug den til at referere til egenskaberne for det viste skærmbillede, f.eks. navnet med formlen App.ActiveScreen.Name. Du kan også sammenligne denne egenskab med et andet skærmobjekt, f.eks. med formlen App.ActiveScreen = Screen2 for at teste, om Screen2 er det viste skærmbillede i øjeblikket.

Brug funktionen Back eller Navigate til at ændre det viste skærmbillede.

BackEnabled egenskab

Egenskaben BackEnabled ændrer, hvordan appen reagerer på enhedens tilbagebevægelse (stryg eller brug hardwaretilbageknappen på Android enheder, stryg fra venstre på iOS enheder), når de kører i Power Apps mobil. Når den er aktiveret, navigerer enhedens tilbagebevægelse tilbage til den skærm, der senest blev vist, hvilket svarer til Tilbage formlen. Når den er deaktiveret, returnerer enhedens tilbagebevægelse brugeren til applisten.

Egenskaber for ConfirmExit

Ingen ønsker at miste ændringer, der ikke er gemt. Brug egenskaberne ConfirmExit og ConfirmExitMessage til at advare brugeren, inden appen lukkes.

Bemærk

  • ConfirmExit fungerer ikke i de apps, der f.eks. er integreret i Power BI og SharePoint.
  • Disse egenskaber kan i øjeblikket kun bruges til at henvise til kontrolelementer på den første skærm, hvis eksempelfunktionen Delayed load er aktiveret (som standard for nye apps). Hvis der er oprettet referencer, viser Power Apps Studio ikke en fejl, men den udgivne app åbnes ikke i Power Apps Mobile eller en browser. Vi arbejder aktivt for at fjerne denne begrænsning. Når du arbejder, kan du deaktivere Forsinket indlæsning under Indstillinger>Kommende funktioner (under Forhåndsversion).

ConfirmExit

ConfirmExit er en boolesk egenskab, og når den er true, åbnes der en bekræftelsesdialogboks, inden appen lukkes. Denne egenskab er som standard false, og der vises ingen dialogboks.

I situationer, hvor brugeren kan have ændringer, der ikke er gemt i appen, skal du bruge denne egenskab til at få vist en bekræftelsesdialogboks, før du afslutter appen. Brug en formel, der kan kontrollere variabler og kontrolelementegenskaber (f.eks. egenskaben Unsaved i kontrolelementet Edit form).

Bekræftelsesdialogboksen vises i enhver situation, hvor data kan gå tabt, som i disse eksempler:

  • Kørsel af funktionen Exit.
  • Hvis appen kører i en browser:
    • Lukning af browseren eller den fane i browseren, hvor appen kører.
    • Valg af knappen Tilbage i browseren.
    • Kørsel af funktionen Launch sammen med en LaunchTargetSelf.
  • Hvis appen kører i Power Apps Mobile (iOS eller Android):
    • Stryge for at skifte til en anden app i Power Apps Mobile.
    • Hvis du vælger knappen Tilbage på en Android-enhed.
    • Kører funktionen Launch for at starte en anden lærredapp.

Det præcise udseende af bekræftelsesdialogboksen kan variere på tværs af enheder og versioner af Power Apps.

Bekræftelsesdialogboksen vises ikke i Power Apps Studio.

ConfirmExitMessage

Som standard vises der en generisk meddelelse i bekræftelsesdialogboksen, f.eks. "Du har måske ændringer, der ikke er gemt" på brugerens sprog.

Brug ConfirmExitMessage til at oprette en brugerdefineret meddelelse i bekræftelsesdialogboksen. Hvis denne egenskab er tom, bruges standardværdien. Brugerdefinerede meddelelser afkortes efter behov, så de passer i bekræftelsesdialogboksen, så sørg for at holde meddelelsen på nogle få linjer.

I en browser vises bekræftelsesdialogboksen måske med en generel meddelelse fra browseren.

Bemærk

Appobjektet har yderligere to egenskaber, OnMessage og BackEnabled, der er eksperimentelle. Disse egenskaber fjernes til sidst fra appobjektet. Vi anbefaler, at du ikke bruger disse egenskaber i produktionsmiljøet.

Eksempel

  1. Opret en app, der indeholder to kontrolelementer til formularer: AccountForm og ContactForm.

  2. Angiv egenskaben ConfirmExit for objektet App til dette udtryk:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Denne dialogboks vises, hvis brugeren ændrer data i en af formularerne og derefter forsøger at lukke appen uden at gemme disse ændringer.

    Generisk bekræftelsesdialogboks.

  3. Angiv egenskaben ConfirmExitMessage for objektet App til denne formel:

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

    Denne dialogboks vises, hvis brugeren ændrer data i formularen Konto og derefter forsøger at lukke appen uden at gemme disse ændringer.

    Formularspecifik bekræftelsesdialogboks.

Konfigurere instrumenteringsnøgle til Application Insights

Hvis du vil eksportere systemgenererede programlogfiler til Application Insights, skal du konfigurere instrumentationsnøglen til din lærredsapp.

  1. Åbn din app for at redigere i Power Apps Studio.
  2. Vælg App-objektet i trævisningen på venstre navigationspanel.
  3. Angiv instrumentationsnøglen i egenskabsruden.

Hvis der ikke sendes data til AppIndsigt, skal du kontakte din Power Platform-administrator og kontrollere, om App Insights er deaktiveret på lejerniveau.

Egenskaben Formler

Brug navngivne formler i egenskaben Formler til at definere en formel, der kan genbruges i hele appen.

I Power Apps er egenskaber for kontrolelementer baseret på formler. Hvis du f.eks. vil angive den samme baggrundsfarve i hele appen, kan du angive egenskaben Udfyld for hver enkelt til en fælles formel:

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

Denne formel skal vises mange steder, så det bliver kedeligt at indtaste den, og der kan opstå fejl, som skal opdateres alle steder, hvis der er brug for en ændring. Du kan i stedet oprette en global variabel i OnStart for at angive farven én gang og derefter genbruge værdien i hele appen:

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

Selvom denne metode er bedre, afhænger den også af, at OnStart køres, før værdien for BGColor er fastlagt. BGColor kan også ændres et sted i appen, som opretteren ikke er klar over – en ændring, der foretages af en anden, og som kan være svær at spore.

Navngivne formler tilbyder et alternativ. På samme måde som vi ofte skriver control-property = expression, kan vi i stedet skrive name = expression og derefter genbruge name i hele appen for at erstatte expression. Definitionerne af disse formler foretages i egenskaben Formler:

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

Fordelene ved at bruge navngivne formler omfatter:

  • Formlens værdi er altid tilgængelig. Der er ingen tidsafhængighed, ingen OnStart, der skal køre først, før værdien angives, ingen tid, hvor formlens værdi er forkert. Navngivne formler kan referere til hinanden i en hvilken som helst rækkefølge, så længe de ikke opretter en cirkulær reference. De kan beregnes parallelt.
  • Formlens værdi er altid opdateret. Formlen kan udføre en beregning, der er afhængig af egenskaber for kontrolelementer eller databaseposter, og efterhånden som de ændres, opdateres formlens værdi automatisk. Du behøver ikke at opdatere værdien manuelt på samme måde som med en variabel. Og formler genberegnes kun efter behov.
  • Formlens definition kan ikke ændres. Definitionen i Formler er fast, og værdien kan ikke ændres andre steder i appen. Med variabler er det muligt, at en eller anden kode uventet ændrer en værdi, men det er ikke muligt med navngivne formler.
  • Formlens beregning kan udskydes. Da værdien er uforanderlig, kan den altid beregnes efter behov, hvilket betyder, at den først skal beregnes, når der er behov for det. Formelværdier, der ikke bruges, før screen2 i en app vises, behøver ikke at blive beregnet, før screen2 er synlig. Sletning af dette arbejde kan forbedre appens indlæsningstid. Navngivne formler er beskrivende og giver systemet mulighed for at optimere, hvordan og hvornår de beregnes.
  • Navngivne formler er et Excel-begreb. Power Fx bruger Excel-begreber, hvor det er muligt, da så mange brugere kender Excel godt. Navngivne formler svarer til navngivne celler og navngivne formler i Excel, der administreres med Navnestyring. De genberegnes automatisk som et regneark, på samme måde som egenskaberne for kontrolelementer gør.

Navngivne formler defineres efter hinanden i egenskaben Formler, som hver især slutter med et semikolon. Typen af formlen udledes af udtrykstyperne, som er baseret på elementtyperne i udtrykket, og hvordan de bruges sammen. Disse navngivne formler kan f.eks. hente nyttige oplysninger om den aktuelle bruger fra 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' );

Hvis formlen for UserTitle skal opdateres, kan det nemt udføres på denne placering. Hvis der ikke er brug for UserPhone i appen, foretages disse kald til tabellen Brugere i Dataverse ikke. Der sker ikke noget, hvis der inkluderes en formeldefinition, der ikke bruges.

Visse begrænsninger for navngivne formler:

  • De kan ikke bruge adfærdsmåder eller på anden måde medføre sideeffekter i appen.
  • De kan ikke oprette en cirkulær reference. Det er ikke tilladt at have a = b; og b = a; i den samme app.

Egenskaben OnError

Brug OnError til at handle, når der er registreret en fejl. Det giver en global mulighed for at afbryde et fejlbanner, før det vises for slutbrugeren. Den kan også bruges til at logføre en fejl med Trace-funktionen eller skrive til en database eller webtjeneste.

Resultatet af alle formelevalueringer kontrolleres for en fejl. Hvis det er en fejl, evalueres OnError med de samme FirstError- og AllErrors-omfangsvariabler, som ville have været til stede, hvis hele formlen var indpakket i en IfError-funktion.

Hvis OnError er tom, vises der et standardfejlbanner med fejlens FirstError.Message. Hvis du definerer en OnError-formel, tilsidesættes denne funktionsmåde, så udvikleren kan håndtere fejlrapportering efter behov. Du kan anmode om standardfunktionsmåden i OnError ved at genudløse fejlen ved hjælp af Error-funktionen. Det er nyttigt, hvis nogle af fejlene skal filtreres fra eller håndteres på en anden måde, mens andre skal overføres.

OnError kan ikke erstatte en fejl i beregninger på samme måde, som IfError kan. På det tidspunkt, hvor OnError kaldes, er fejlen allerede sket, og den er allerede blevet behandlet via formelberegninger. *OnError* styrer kun fejlrapportering.

OnError-formler evalueres samtidig, og det er muligt, at deres evaluering overlapper med behandlingen af andre fejl. Hvis du f.eks. angiver en global variabel øverst på en OnError og læser den senere i den samme formel, kan værdien være ændret. Brug funktionen With til at oprette en navngivet værdi, der er lokal for formlen.

Selvom de enkelte fejl behandles individuelt af OnError, vises standardfejlbanneret måske ikke for de enkelte fejl for sig. Hvis du vil undgå, at der vises for mange fejlbannere samtidig, udløser den samme fejl ikke et nyt fejlbanner, hvis det er blevet vist for nylig.

Eksempel

Se på et Label-kontrolelement og Slider-kontrolelement, der er bundet sammen gennem formlen:

Label1.Text = 1/Slider1.Value

Label- og slider-kontrolelement bundet gennem formlen Label1.Text = 1/Slider1.Value.

Slider har standarden 50. Hvis skyderen flyttes til 0, vises der ingen værdi i Label1, og der vises ingen værdi og intet fejlbanner:

Slider-kontrolelementet er flyttet til 0, hvilket resulterer i en division med nul-fejl, og et fejlbanner.

Lad os se nærmere på, hvad der er sket:

  1. Brugeren har flyttet slider til venstre, og egenskaben Slide1.Value er ændret til 0.
  2. Label1.Text blev automatisk evalueret igen. Der opstod en fejl ved division med nul.
  3. Der findes ingen IfError i denne formel. Division med nul-fejlen returneres af formelevalueringen.
  4. Label1.Text kan ikke vise noget for denne fejl, så der vises en tom tilstand.
  5. OnError er kaldt. Da der ikke findes nogen handler, vises standardfejlbanneret med oplysninger om fejlen.

Hvis det er nødvendigt, kan du også ændre formlen til Label1.Text = IfError( 1/Slider1.Value, 0 ). Dette ville resultere i ingen fejl eller fejlbannere. Vi kan ikke ændre værdien af en fejl fra OnError, da fejlen allerede er opstået, men det er kun et spørgsmål om, hvordan den vil blive rapporteret.

Hvis vi tilføjer en OnError-handler, har den ingen virkning før trin 5, men den kan påvirke, hvordan fejlen rapporteres:

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

App.OnError-formel, der er indstillet til at oprette en Trace.

Når dette er på plads, vil der ikke være fejl fra appbrugerens perspektiv. Men fejlen føjes til overvågningssporingen, komplet med kilden til fejloplysningerne fra FirstError:

Skyder-kontrolelementet er flyttet til 0, hvilket resulterer i en division med nul-fejl, men intet fejlbanner.

Hvis der også skal vises det samme standardfejlbanner sammen med sporingen, kan vi genudløse fejlen ved hjælp af funktionen Error efter Trace-kaldet på samme måde, som hvis Trace ikke fandtes:

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

Egenskaben OnStart

Bemærk

Brugen af egenskaben OnStart kan give ydeevneproblemer under indlæsning af en app. Vi er i gang med at oprette alternativer af de to vigtigste årsager til at bruge egenskabslagring af data og konfiguration af globale variabler. Vi har allerede oprettet et alternativ til definition af det første skærmbillede, der skal vises med Navigate. Afhængigt af din kontekst kan denne egenskab deaktiveres som standard. Hvis du ikke kan se den, og du har brug for at bruge den, skal du kontrollere appens avancerede indstillinger for at få en switch til at aktivere den. Egenskaben OnVisible for et skærmbillede kan også bruges.

Egenskaben OnStart køres, når brugeren starter appen. Denne egenskab bruges ofte til at udføre følgende opgaver:

  • Hente og cachelagre data i samlinger ved hjælp af funktionen Collect.
  • Konfigurere globale variabler ved hjælp af funktionen Set.

Denne formel evalueres, før det første skærmbillede vises. Der indlæses intet skærmbillede, så du kan ikke angive kontekstvariabler med funktionen UpdateContext. Du kan imidlertid overføre kontekstvariabler sammen med funktionen Navigate.

Når du har ændret egenskaben OnStart, skal du teste den ved at holde musen hen over App-objektet i ruden Trævisning, vælge ellipse (...) og derefter vælge Kør OnStart. Til forskel fra, når appen indlæses første gang, vil eksisterende samlinger og variabler allerede være angivet. Hvis du vil starte med tomme samlinger, skal du bruge funktionen ClearCollect i stedet for funktionen Collect.

Appelements genvejsmenu til Kør OnStart

Bemærk

  • Funktionen Navigate i egenskaben OnStart er udfaset. Eksisterende apps vil fortsat fungere. I en begrænset periode kan du stadig aktivere den i appindstillingerne (tilgængelig under Udfaset). Men hvis du bruger Naviger på denne måde, kan det medføre forsinkelser i appens indlæsning, da det tvinger systemet til at fuldføre evaluering af OnStart, før det første skærmbillede vises. Brug i stedet egenskaben StartScreen til at beregne det første skærmbillede, der vises.
  • Udgået switch slås fra for apps, der er oprettet før marts 2021, hvor du har føjet Naviger til OnStart fra marts 2021 til nu. Når du redigerer sådanne apps i Power Apps Studio, kan du få vist en fejl. Slå ovennævnte Udfaset-switch for at rydde denne fejl.

Egenskaben StartScreen

Bemærk

Egenskaben StartScreen vises ikke på listen over egenskaber, når den udgåede indstilling Forbedret formellinje er slået til. Hvis du vil slå Forbedret formellinje fra, skal du gå til Indstillinger>Kommende funktioner>Udgået> deaktiver Forbedret formellinje, når du vil bruge egenskaben StartScreen.

Egenskaben StartScreen bestemmer, hvilket skærmbillede der vises først. Den evalueres én gang, når appen indlæses og returnerer det skærmobjekt, der skal vises. Denne egenskab er som standard tom, og det første skærmbillede i studiotrævisningen vises først.

StartScreen er en egenskab for dataflow, der ikke kan indeholde funktionsmådefunktioner. Alle dataflowfunktioner er tilgængelige. Brug især disse funktioner og disse tegn til at bestemme, hvilket skærmbillede der skal vises først:

  • Param fungerer til at læse de parametre, der bruges til at starte appen.
  • Bruger fungerer til at læse oplysninger om den aktuelle bruger.
  • LookUp, Filter, CountRows, Max og andre funktioner, der læser fra en datakilde.
  • Alle API'er ringer via en tilslutning, men vær forsigtig med at returnere hurtigt.
  • Signaler, som f.eks. Forbindelse, Compass og App.

Bemærk

Globale variabler og samlinger, herunder dem, der er oprettet i OnStart, er ikke tilgængelige i StartScreen. Der findes beskrivende alternativer til dette, som er på vej. Hvis du har feedback på denne begrænsning, skal du gå til Power Apps-communityforum.

Hvis StartScreen returnerer en fejl, vises det første skærmbillede i Studio Tree-visningen, som om StartScreen ikke er indstillet. Brug funktionen IfError for at få vist eventuelle fejl og omdirigere til det relevante fejlskærmbillede.

Når du har ændret StartScreen i Studio, skal du teste den ved at holde musen hen over App-objektet i ruden Trævisning, vælge ellipsen (...) og derefter vælge Naviger til StartScreen. Skærmbilledet ændres, som om appen er blevet indlæst.

Gå til StartScreen

Eksempler

Screen9

Angiver, at Screen9 skal vises først, når appen startes.

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

Undersøger, om Param-"administrationstilstanden" er indstillet af brugeren, og bruger den til at afgøre, om HomeScreen eller AdminScreen skal vises først.

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

Kontrollerer, om en deltager er medarbejder i en konference, og dirigerer vedkommende til den rette skærm ved start.

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

Dirigerer appen baseret på et API-opkald til enten ForestScreen eller OceanScreen. Hvis API'en af en eller anden grund mislykkes, bruges ErrorScreen i stedet.

Egenskab for StudioVersion

Brug egenskaben StudioVersion til at få vist eller logføre den version af den Power Apps Studio, der blev brugt til at udgive en app. Dette kan være nyttigt i forbindelse med fejlfinding og til at sikre, at din app er blevet udgivet igen med en nyere version af Power Apps Studio.

StudioVersion returneres som tekst. Formatet af teksten kan ændre sig med tiden og skal behandles som en hel tekst. undgå at udtrække enkelte portioner.