Objecte Aplicació al Power Apps

S'aplica a: Aplicacions del llenç Aplicacions basades en models

Proporciona informació sobre el control i l'aplicació que s'executen actualment amb el comportament de l'aplicació.

Descripció

Com un control, l'objecte Aplicació proporciona propietats que identifiquen la pantalla que es mostra i que demanen a l'usuari que desi els canvis per tal que no es perdin. Cada aplicació té un objecte Aplicació.

Podeu escriure fórmules per a algunes de les propietats de l'objecte Aplicació. A la part superior de la subfinestra Visualització d'arbre, seleccioneu l'objecte Aplicació com faríeu amb qualsevol altre control o pantalla. Visualitzeu i editeu una de les propietats de l'objecte seleccionant-lo a la llista desplegable de l'esquerra de la barra de fórmules.

L'objecte App a la subfinestra de visualització en arbre.

Propietat ActiveScreen

La propietat ActiveScreen identifica la pantalla que es mostra.

Aquesta propietat retorna un objecte de pantalla. Utilitzeu-lo per fer referència a propietats de la pantalla que es mostra actualment, com ara el nom amb la fórmula App.ActiveScreen.Name. També podeu comparar aquesta propietat amb un altre objecte de pantalla, com ara amb la fórmula de comparació App.ActiveScreen = Screen2 per provar si Screen2 és la pantalla que es mostra actualment.

Utilitzeu la funció Back o Navigate per canviar la pantalla que es mostra.

Propietat BackEnabled

La propietat BackEnabled canvia la manera com l'aplicació respon al gest de tornada del dispositiu (llisca o utilitza el botó d'esquena del maquinari als Android dispositius, llisca des de l'esquerra als dispositius) quan s'executa iOS al Power Apps mòbil. Quan està activat, el gest de tornada del dispositiu torna a la pantalla que s'ha mostrat més recentment, que és similar a la fórmula Enrere . Quan està desactivat, el gest de tornada del dispositiu torna l'usuari a la llista d'aplicacions.

Propietats ConfirmExit

Ningú no vol perdre els canvis que no s'han desat. Utilitzeu les propietats ConfirmExit i ConfirmExitMessage per avisar l'usuari abans de tancar l'aplicació.

Nota

  • ConfirmExit no funciona en aplicacions que s'han incrustat, per exemple, al Power BI i el SharePoint.
  • Actualment, aquestes propietats poden fer referència als controls només de la primera pantalla si la característica de versió preliminar Càrrega retardada està habilitada (que és per defecte per a les noves aplicacions). Si es fan referències, el Power Apps Studio no mostra cap error, però l'aplicació publicada resultant no s'obre al Power Apps per a dispositius mòbils ni al navegador. Estem treballant activament per corregir aquesta limitació. Mentrestant, podeu desactivar Càrrega amb retard a Configuració>Característiques futures (a Versió preliminar).

ConfirmExit

ConfirmExit és una propietat booleana que, quan es defineix com a true, obre un quadre de diàleg de confirmació abans que l'aplicació es tanqui. Per defecte, aquesta propietat està definida com a false i no apareix cap quadre de diàleg.

En situacions en què l'usuari pot tenir canvis no desats a l'aplicació, utilitzeu aquesta propietat per mostrar un quadre de diàleg de confirmació abans de sortir de l'aplicació. Utilitzeu una fórmula que pugui comprovar variables i controlar propietats (per exemple, la propietat Unsaved del control Edita el formulari).

El quadre de diàleg de confirmació apareix en qualsevol situació on es puguin perdre dades, com ara en aquests exemples:

  • Executar la funció Exit.
  • Si l'aplicació s'està executant en un navegador:
    • Tancar el navegador o la pestanya del navegador en què s'executa l'aplicació.
    • Seleccionar el botó Enrere del navegador.
    • Executar la funció Launch amb LaunchTargetSelf.
  • Si l'aplicació s'executa en Power Apps Mòbil (iOS o Android):
    • Lliscar per canviar a una altra aplicació a l'aplicació mòbil del Power Apps.
    • Seleccionar el botó Enrere en un dispositiu Android.
    • Executar la funció Launch per iniciar una altra aplicació del llenç.

L'aparença exacta del quadre de diàleg de confirmació pot variar entre els dispositius i les versions del Power Apps.

El quadre de diàleg de confirmació no apareix al Power Apps Studio.

ConfirmExitMessage

Per defecte, el quadre de diàleg de confirmació mostra un missatge genèric, com ara "Pot ser que hi hagi canvis no desats" en la llengua de l'usuari.

Utilitzeu ConfirmExitMessage per proporcionar un missatge personalitzat al quadre de diàleg de confirmació. Si aquesta propietat està en blanc, s'utilitzarà el valor per defecte. Els missatges personalitzats es trunquen segons calgui per adaptar-se al quadre de diàleg de confirmació; per tant, heu de mantenir el missatge en poques línies com a màxim.

En un navegador, pot ser que el quadre de diàleg de confirmació aparegui amb un missatge genèric del navegador.

Nota

L'objecte de l'aplicació té dues propietats OnMessage i BackEnabled més que són experimentals. Aquestes propietats se suprimiran de l'objecte de l'aplicació finalment. Recomanem no utilitzar aquestes propietats en el vostre entorn de producció.

Exemple

  1. Crear una aplicació que contingui dos controls de formulari, AccountForm i ContactForm.

  2. Definiu la propietat ConfirmExit de l'objecte Aplicació en aquesta expressió:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Aquest quadre de diàleg apareix si l'usuari canvia les dades d'un formulari i, a continuació, prova de tancar l'aplicació sense desar-ne els canvis.

    Quadre de diàleg genèric de confirmació.

  3. Definiu la propietat ConfirmExitMessage de l'objecte Aplicació en aquesta fórmula:

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

    Aquest quadre de diàleg apareix si l'usuari canvia les dades del formulari Compte i, a continuació, prova de tancar l'aplicació sense desar-ne els canvis.

    Quadre de diàleg de confirmació específic del formulari.

Clau d'instrumentació de configuració per a Application Insights

Per exportar els registres d'aplicacions generades pel Application Insights sistema, heu de configurar la clau d'instrumentació per a l'aplicació llenç.

  1. Obre l'aplicació per editar-la a Power Apps Stuido.
  2. Seleccioneu l'objecte App a la vista en arbre de navegació de l'esquerra.
  3. Introduïu la clau Instrumentació a la subfinestra de propietats.

Si no s'envien dades al Estadístiques d'aplicacions, contacteu amb l'administrador Power Platform i verifiqueu si el Coneixements d'aplicació està desactivat al nivell d'inquilí.

Propietat Fórmules

Utilitzeu les fórmules amb nom, a la propietat Fórmules, per definir una fórmula que es pot reutilitzar a tota l'aplicació.

Al Power Apps, les propietats de control es controlen mitjançant fórmules. Per exemple, per definir el color de fons de manera coherent en una aplicació, podríeu definir la propietat Emplena per a cadascuna com una fórmula comuna:

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

Amb tants llocs on pugui aparèixer aquesta fórmula, passa a ser feixuc i propens a errors actualitzar-los tots si es necessita un canvi. En lloc d'això, podeu crear una variable global OnStart per definir el color una vegada i després tornar a utilitzar el valor a tota l'aplicació:

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

Tot i que aquest mètode és millor, també depèn de l'execució d'OnStart abans d'establir el valor de BGColor. BGColor també es pot manipular en alguna part de l'aplicació de la qual el responsable no s'adona, amb un canvi fet per algú altre i que pot ser difícil de fer-ne un seguiment.

Les fórmules amb nom proporcionen una alternativa. De la mateixa manera que escrivim control-propietat = expressió, en el seu lloc podem escriure nom = expressió i després reutilitzar nom a tota la nostra aplicació per substituir l'expressió. Les definicions d'aquestes fórmules es realitzen a la propietat Fórmules:

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

Els avantatges de l'ús de fórmules amb nom són:

  • El valor de la fórmula sempre està disponible. No hi ha cap dependència de temps, cap OnStart que s'hagi d'executar abans que el valor estigui definit, cap hora en què el valor de la fórmula no sigui correcte. Les fórmules amb nom es poden fer referència en qualsevol ordre, sempre que no creïn una referència circular. Es poden calcular en paral·lel.
  • El valor de la fórmula sempre està actualitzat. La fórmula pot fer un càlcul que depèn de les propietats del control o dels registres de la base de dades i, a mida que canvien, el valor de la fórmula s'actualitza automàticament. No cal que actualitzeu manualment el valor com feu amb una variable. I les fórmules només es tornen a calcular quan cal.
  • La definició de la fórmula és immutable. La definició de Fórmules és l'única font de veritat i el valor no es pot canviar en un altre lloc de l'aplicació. Amb les variables, és possible que algun codi canviï inesperadament un valor, però això no és possible amb les fórmules amb nom.
  • El càlcul de la fórmula es pot ajornar. Com que el seu valor és immutable, sempre es pot calcular quan sigui necessari, de manera que no cal calcular-lo fins que no es necessita. Els valors de fórmula que no s'utilitzen fins que no es visualitza la pantalla2 d'una aplicació no es calculen fins que la pantalla2 estigui visible. Ajornar aquest treball pot millorar el temps de càrrega de l'aplicació. Les fórmules amb nom són declaratives i ofereixen oportunitats perquè sistema optimitzi la manera com i el moment en què es calculen.
  • Les fórmules amb nom són un concepte d'Excel. El Power Fx utilitza conceptes de l'Excel sempre que sigui possible perquè moltes persones coneixen bé l'Excel. Les fórmules amb nom són l'equivalent a les cèl·lules amb nom i les fórmules amb nom de l'Excel, administrades amb l'Administrador de noms. Es tornen a calcular automàticament com ho fa un full de càlcul, igual que les propietats de control.

Les fórmules amb nom es defineixen, una rere l'altra a la propietat Fórmules, que acaben amb un punt i coma. El tipus de fórmula s'infereix dels tipus d'expressió, que es basa en els tipus d'elements dins de l'expressió i en la manera com s'utilitzen junts. Per exemple, aquestes fórmules amb nom recuperen informació útil sobre l'usuari actual del 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' );

Si la fórmula per a UserTitle s'ha d'actualitzar, es pot fer fàcilment en aquesta mateixa ubicació. Si UserPhone no és necessari a l'aplicació, aquestes crides a la taula Usuaris del Dataverse no es fan. No hi ha cap penalització per incloure una definició de fórmula que no s'utilitza.

Algunes limitacions de les fórmules amb nom:

  • No poden utilitzar funcions de comportament ni provocar altres efectes secundaris a l'aplicació.
  • No poden crear una referència circular. Tenir a = b; i b = a; a la mateixa aplicació no està permès.

Propietat OnError

Utilitzeu OnError per fer l'acció quan s'ha detectat un error. Proporciona una oportunitat global per interceptar un bàner d'error abans que es visualitzi a l'usuari final. També es pot utilitzar per registrar un error amb la funció Seguiment o escriure a una base de dades o a un servei web.

El resultat de cada avaluació de fórmules es comprova per si hi ha un error. Si hi ha un error, OnError s'avaluarà amb les mateixes variables d'àmbit FirstError i AllErrors que haurien estat presents si tota la fórmula s'hagués embolicat en una funció IfError.

Si OnError està buit, es mostra un bàner d'error per defecte amb el FirstError.Message de l'error. La definició d'una fórmula OnErrorsubstitueix aquest comportament que permet al responsable gestionar els informes d'errors quan convingui. Per sol·licitar el comportament per defecte a OnError, torneu a enviar l'error amb la funció Error. Això és útil si s'han de filtrar o gestionar alguns errors d'una altra manera, mentre que altres es passaran per alt.

OnError no pot substituir un error en els càlculs de la manera que ho fa IfError. En el moment en què OnError s'ha invocat, l'error ja s'ha produït i ja s'ha processat mitjançant càlculs de fórmules. *OnError* controla els informes d'error només.

Les fórmules OnError s'avaluen simultàniament i és possible que la seva avaluació se superposi amb el processament d'altres errors. Per exemple, si definiu una variable global a més d'OnError i la llegiu més endavant a la mateixa fórmula, el valor podria haver canviat. Utilitzeu la funció Amb per crear un valor amb nom que sigui local a la fórmula.

Tot i que cada error es processa individualment amb OnError, pot ser que el bàner d'error per defecte no aparegui individualment per a cada error. Per evitar que es mostrin massa bàners d'error al mateix temps, el mateix error no activarà un nou bàner d'error si s'ha mostrat recentment.

Exemple

Considereu un control d'Tag i un control Slider que estan units per la fórmula:

Label1.Text = 1/Slider1.Value

Control d'etiquetes i control lliscant lligat mitjançant la fórmula Label1.Text = 1/Slider1.Value.

El control lliscant és per defecte 50. Si el control lliscant es desplaça a 0, Label1 no mostrarà cap valor i es mostra un bàner d'error:

El control lliscant es va moure a 0, resultant en una divisió per error zero i un bàner d'error.

Fem un cop d'ull al que ha passat en detall:

  1. L'usuari ha mogut el control lliscant cap a l'esquerra i la propietat Slide1.Value ha canviat a 0.
  2. Label1.Text s'ha tornat a avaluar automàticament. La divisió per zero s'ha produït, generant un error.
  3. En aquesta fórmula no hi ha cap IfError. L'avaluació de la fórmula retorna l'error de divisió per zero.
  4. Label1.Text no pot mostrar res per a aquest error i, per tant, mostra un estat blank.
  5. S'invoca OnError. Com que no hi ha cap controlador, es visualitza el bàner d'error estàndard amb informació de l'error.

Si cal, també podríem modificar la fórmula per Label1.Text = IfError( 1/Slider1.Value, 0 ). Això no donaria lloc a cap missatge o bàner d'error. No podem canviar el valor d'un error d'OnError perquè en aquest moment l'error ja ha passat, només es tracta de com s'informarà.

Si afegim un controlador OnError , no tindrà cap impacte abans del pas 5, però pot afectar la manera com s'informa de l'error:

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

Conjunt de fórmules App.OnError per generar un seguiment.

En aquest punt, des de la perspectiva de l'usuari de l'aplicació, no hi haurà cap error. Però l'error s'afegirà al seguiment del Monitor, junt amb l'origen de la informació d'error de FirstError:

El control lliscant es va moure a 0, resultant en una divisió per error zero, però sense bàner d'error.

Si també volem que es visualitzi el mateix bàner d'error per defecte a més de la traça, podem tornar a enviar l'error amb la funció Error després de la crida Trace igual que ho faríem si Trace no hi fos:

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

Propietat OnStart

Nota

L'ús de la propietat OnStart pot provocar problemes de rendiment en carregar una aplicació. Estem en procés de crear alternatives per les dues raons principals per les quals s'utilitza la propietat: desar dades a la memòria cau i configurar variables globals. Ja hem creat una alternativa per definir la primera pantalla que es mostra amb la funció Navigate. En funció del context, aquesta propietat es pot inhabilitar per defecte. Si no la veieu i heu d'utilitzar-la, comproveu la configuració avançada de l'aplicació per activar-la. La propietat OnVisible d'una pantalla també es pot utilitzar.

La propietat OnStart s'executa quan l'usuari inicia l'aplicació. Aquesta propietat s'utilitza sovint per fer les tasques següents:

  • Recuperar i emmagatzemar a la memòria cau dades de col·leccions mitjançant la funció Collect.
  • Configurar les variables globals mitjançant la funció Set.

Aquesta fórmula s'avalua abans que aparegui la primera pantalla. No es carrega cap pantalla i, per tant, no podeu definir variables de context amb la funció UpdateContext. No obstant això, podeu passar variables de context amb la funció Navigate.

Després de canviar la propietat OnStart, proveu-la passant el ratolí per damunt de l'objecte Aplicació a la subfinestra Visualització d'arbre, seleccioneu els punts suspensius (...) i seleccioneu Executa OnStart. A diferència de quan l'aplicació es carrega per primer cop, les col·leccions i les variables existents ja estaran definides. Per començar amb col·leccions buides, utilitzeu la funció ClearCollect en comptes de la funció Collect.

Menú de drecera de l'element de l'aplicació corresponent a Executa OnStart

Nota

  • L'ús de la funció Navigate a la propietat OnStart s'ha retirat. Les aplicacions existents continuaran funcionant. Per un temps limitat, encara la podeu habilitar a la configuració de l'aplicació (disponible a Retirat). Tanmateix, l'ús de Navigate d'aquesta manera pot provocar retards en la càrrega de l'aplicació ja que l'aplicació és l'avaluació completa d'OnStart abans de mostrar la primera pantalla. En lloc d'això, utilitzeu la propietat StartScreen per calcular la primera pantalla que es visualitzarà.
  • La commutació Retired es desactivarà per a les aplicacions creades abans del mes de març de 2021, on heu afegit Navigate a OnStart entre el març de 2021 i el moment actual. Quan editeu aquestes aplicacions al Power Apps Studio, pot ser que es produeixi un error. Canvieu la commutació Retired anterior per esborrar aquest error.

Propietat StartScreen

Nota

La propietat StartScreen s'obrirà a la llista de propietats quan s'activi la barra de fórmules millorada de l'opció retirada. Per desactivar la barra de fórmules millorada, aneu a Configuració>Característiques futures>Retirades> desactiveu la barra de fórmules millorada quan vulgueu utilitzar la propietat StartScreen.

La propietat StartScreen determina quina pantalla es visualitzarà primer. S'avalua quan es carrega l'aplicació i retorna l'objecte de pantalla que es visualitzarà. Per defecte, aquesta propietat estarà buida i la primera pantalla de la visualització Arbre de Studio es mostra primer.

StartScreen és una propietat del flux de dades que no pot contenir funcions de comportament. Totes les funcions de flux de dades estan disponibles, en especial, utilitzeu aquestes funcions i senyals per determinar quina pantalla es mostra primer:

  • Funció Param per llegir paràmetres utilitzats per iniciar l'aplicació.
  • Funció User per llegir informació sobre l'usuari actual.
  • LookUp, Filter, CountRows, Max i altres funcions que llegeixen d'una font de dades.
  • Les crides d'API a través d'un connector, però assegureu-vos que es torni ràpidament.
  • Senyals com ara Connection, Compass i App.

Nota

Les variables i col·leccions globals, incloent-hi les creades a OnStart, no estan disponibles a StartScreen. Hi ha alternatives declaratives per fer això que s'estan creant. Per enviar els vostres comentaris sobre aquesta restricció, aneu al Fòrum de la comunitat del Power Apps.

Si StartScreen retorna un error, la primera pantalla de la visualització Arbre de Studio es mostrarà com si StartScreen no s'hagués definit. Utilitzeu la funció IfError per capturar errors i redirigir a una pantalla d'error adequada.

Després de canviar StartScreen a Studio, proveu-la passant el ratolí per damunt de l'objecte Aplicació a la subfinestra Visualització d'arbre, seleccioneu els punts suspensius (...) i seleccioneu Navega a StartScreen. La pantalla canviarà com si l'aplicació s'hagués carregat.

Navega a StartScreen

Exemples

Screen9

Indica que Screen9 s'ha de mostrar primer cada vegada que s'inicia l'aplicació.

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

Comprova si l'usuari defineix "admin-mode" a Param i l'utilitza per decidir si el fitxer HomeScreen o AdminScreen s'ha de visualitzar primer.

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

Comprova si un assistent a una conferència és un membre del personal i els dirigeix a la pantalla correcta a l'inici.

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

Dirigeix l'aplicació en funció d'una crida d'API a ForestScreen o OceanScreen. Si l'API falla per alguna raó, s'utilitza ErrorScreen com a alternativa.

Propietat StudioVersion

Utilitzeu la propietat StudioVersion per mostrar o registrar la versió que s'ha Power Apps Studio utilitzat per publicar una aplicació. Això pot ser útil a l'hora de depurar i per assegurar-se que l'aplicació s'ha tornat a publicar amb una versió recent de Power Apps Studio.

StudioVersion es retorna com a text. El format del text pot canviar amb el temps i s'ha de tractar en el seu conjunt; Eviteu extreure porcions individuals.