Obxecto da aplicación en Power Apps

Aplícase a: Aplicacións de lenzo Aplicacións baseadas en modelos

Ofrece información sobre a aplicación que se está a executar e controla o comportamento da aplicación.

Descripción

Como un control, o obxecto da aplicación proporciona propiedades que identifican a pantalla que se mostra e que lle solicitan ao usuario gardar cambios para que non se perdan. Cada aplicación ten un obxecto da aplicación.

Pode escribir fórmulas para algunhas propiedades do obxecto da aplicación. Na parte superior da Visualización en árbore selecciona o obxecto da aplicación como faría con calquera outro control ou pantalla. Vexa e edite unha das propiedades do obxecto mediante a súa selección na lista despregable á esquerda da barra de fórmulas.

O obxecto da aplicación no panel de vista en árbore.

Propiedade ActiveScreen

A propiedade ActiveScreen identifica a pantalla que se mostra.

Esta propiedade devolve un obxecto de pantalla. Utilízao para facer referencia ás propiedades da pantalla que se mostra actualmente, como o nome coa fórmula App.ActiveScreen.Name. Tamén podes comparar esta propiedade con outro obxecto de pantalla, como coa fórmula de comparación App.ActiveScreen = Screen2 para probar se Screen2 é a pantalla que se mostra actualmente.

Use a función Back ou Navigate para cambiar a pantalla que se mostra.

Propiedade BackEnabled

A propiedade BackEnabled cambia a forma en que a aplicación responde ao xesto cara atrás do dispositivo (pase o dedo ou use o botón de retroceso de hardware en Android dispositivos, pase o dedo desde a esquerda a iOS dispositivos) cando se executa en Power Apps móbil. Cando está activado, o xesto cara atrás do dispositivo volve á pantalla que se amosou máis recentemente, que é semellante á fórmula Atrás . Cando está desactivado, o xesto cara atrás do dispositivo devolve o usuario á lista de aplicacións.

Propiedades ConfirmExit

Ninguén quere perder os cambios non gardados. Use as propiedades ConfirmExit e ConfirmExitMessage para avisar ao usuario antes de pechar a súa aplicación.

Nota

  • ConfirmExit non funciona en aplicacións incorporadas, por exemplo Power BI e SharePoint.
  • Actualmente, estas propiedades poden facer referencia aos controis só na primeira pantalla se a funcionalidade de previsualización Carga atrasada está activada (que está por defecto para novas aplicacións). Se se fan referencias, Power Apps Studio non mostra un erro, pero a aplicación publicada resultante non se abre en Power Apps Mobile ou nun explorador. Estamos a traballar activamente para quitar esta limitación. Mentres tanto, pode apagar Carga atrasada en Configuración>Próximas funcións (en Versión preliminar).

ConfirmExit

ConfirmExit é unha propiedade booleana que, cando se establece en true, abre unha caixa de diálogo de confirmación antes de pechar a aplicación. Por defecto, esta propiedade é false e non aparece ningunha caixa de diálogo.

En situacións nas que o usuario pode ter cambios sen gardar na aplicación, utiliza esta propiedade para mostrar unha caixa de diálogo de confirmación antes de saír da aplicación. Use unha fórmula que poida comprobar as variables e controlar as propiedades (por exemplo, a propiedade Non gardado do control Editar formulario).

A caixa de diálogo de confirmación aparece en calquera situación na que se puidesen perder datos, como neste exemplos:

  • Executando a función Exit.
  • Se a aplicación se executa nun explorador:
    • Pechando o explorador ou o separador do explorador no que se está a executar a aplicación.
    • Seleccionando o botón Atrás do explorador.
    • Execución da función Launch cun LaunchTarget de Automático.
  • Se a aplicación se executa en Power Apps móbil (iOS ou Android):
    • Pasando o dedo para cambiar a outra aplicación en Power Apps Mobile.
    • Seleccionando o botón Atrás nun dispositivo de Android.
    • Execución da función Launch para lanzar outra aplicación de lenzo.

O aspecto exacto da caixa de diálogo de confirmación pode variar entre dispositivos e versións de Power Apps.

A caixa de diálogo de confirmación non aparece en Power Apps Studio.

ConfirmExitMessage

Por defecto, a caixa de diálogo de confirmación mostra unha mensaxe xenérica, como "Pode ter cambios sen gardar." no idioma do usuario.

Use ConfirmExitMessage para proporcionar unha mensaxe personalizada na caixa de diálogo de confirmación. Se esta propiedade está en branco, úsase o valor predefinido. As mensaxes personalizadas trúncanse segundo o necesario para axustarse á caixa de diálogo de confirmación, polo que manteña a mensaxe nunhas poucas liñas como máximo.

Nun explorador, a caixa de diálogo de confirmación pode aparecer cunha mensaxe xenérica do explorador.

Nota

O obxecto da aplicación ten dúas propiedades máis OnMessage e BackEnabled que son experimentais. Estas propiedades eliminaranse eventualmente do obxecto da aplicación. Recomendámoslle que non use estas propiedades no seu ambiente de produción.

Exemplo

  1. Cree unha aplicación que conteña dous controis de formulario, AccountForm e ContactForm.

  2. Estableza a propiedade ConfirmExit do obxecto da aplicación nesta expresión:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Esta caixa de diálogo aparece se o usuario cambia datos en calquera formulario e logo tenta pechar a aplicación sen gardar eses cambios.

    Cadro de diálogo de confirmación xenérico.

  3. Estableza a propiedade ConfirmExitMessage do obxecto da aplicación nesta fórmula:

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

    Esta caixa de diálogo aparece se o usuario cambia datos no formulario Conta e logo tenta pechar a aplicación sen gardar eses cambios.

    Cadro de diálogo de confirmación específico do formulario.

Configurar clave de instrumentación para Application Insights

Para exportar rexistros de aplicacións xerados polo sistema a Application Insights, cómpre configurar a Clave de instrumentación para a súa aplicación de lenzo.

  1. Abre a túa aplicación para editar en Power Apps Stuido.
  2. Seleccione o obxecto App na vista da árbore de navegación esquerda.
  3. Introduza a Clave de instrumentación no panel de propiedades.

Se os datos non se envían a App Insights, ponte en contacto co teu Power Platform administrador e verifica se App Insights está desactivado a nivel de inquilino.

Propiedade das fórmulas

Use fórmulas con nome, na propiedade Fórmulas , para definir unha fórmula que se pode reutilizar na súa aplicación.

En Power Apps, as propiedades de control están baseadas en fórmulas. Por exemplo, para establecer a cor de fondo de forma uniforme nunha aplicación, pode establecer a propiedade Recheo de cada unha cunha fórmula común:

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

Con tantos lugares onde pode aparecer esta fórmula, faise tedioso e propenso a erros actualizalas todas se é necesario un cambio. Pola contra, pode crear unha variable global en OnStart para establecer a cor unha vez e, a seguir, reutilizar o valor en toda a aplicación:

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

Aínda que este método é mellor, tamén depende de que OnStart se execute antes de que se estableza o valor de BGColor . BGColor tamén se pode manipular nalgún recuncho da aplicación que o creador descoñece, un cambio feito por outra persoa e que pode ser difícil de rastrexar.

As fórmulas con nome proporcionan unha alternativa. Do mesmo xeito que adoitamos escribir control-property = expression, podemos escribir name = expression e despois reutilizar name en toda a nosa aplicación para substituír expression. As definicións destas fórmulas realízanse na propiedade Formulas property:

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

As vantaxes de usar fórmulas con nome inclúen:

  • O valor da fórmula está sempre dispoñible. Non hai ningunha dependencia de tempo, ningún OnStart que deba executarse primeiro antes de que se estableza o valor, nin ningún momento no que o valor da fórmula sexa incorrecto. As fórmulas con nome poden referirse entre si en calquera orde, sempre que non creen unha referencia circular. Pódense calcular en paralelo.
  • O valor da fórmula está sempre actualizado. A fórmula pode realizar un cálculo que depende das propiedades de control ou dos rexistros da base de datos e, a medida que cambian, o valor da fórmula actualízase automaticamente. Non é necesario actualizar manualmente o valor como se fai cunha variable. E as fórmulas só se volven calcular cando é necesario.
  • A definición da fórmula é inmutable. A definición en Fórmulas é a única fonte de verdade e o valor non se pode cambiar noutro lugar da aplicación. Con variables, é posible que algún código cambie un valor de forma inesperada, pero isto non é posible con fórmulas con nome.
  • O cálculo da fórmula pódese aprazar. Debido a que o seu valor é inmutable, sempre se pode calcular cando sexa necesario, o que significa que non é necesario calculalo ata que sexa necesario. Os valores das fórmulas que non se usan ata que se amosa a pantalla2 dunha aplicación non é necesario calcular ata que a pantalla2 sexa visible. Aplazar este traballo pode mellorar o tempo de carga da aplicación. As fórmulas con nome son declarativas e ofrecen ao sistema oportunidades para optimizar como e cando se calculan.
  • As fórmulas con nome son un concepto de Excel. Power Fx usa conceptos de Excel sempre que sexa posible xa que moita xente coñece ben Excel. As fórmulas con nome son o equivalente ás celas con nome e ás fórmulas con nome en Excel, xestionadas co Xestor de nomes. Calcúlanse de novo automaticamente como unha folla de cálculo, igual que as propiedades de control.

As fórmulas con nome defínense unha tras outra na propiedade Fórmulas, rematando cada unha cun punto e coma. O tipo da fórmula dedúcese a partir dos tipos de expresión, que se basea nos tipos de elementos dentro da expresión e como se usan xuntos. Por exemplo, estas fórmulas con nome recuperan información útil sobre o usuario actual de 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' );

Se hai que actualizar a fórmula de UserTitle, pódese facer facilmente nesta única localización. Se UserPhone non é necesario na aplicación, entón estas chamadas á táboa Usuarios en Dataverse non se realizan. Non hai penalización por incluír unha definición de fórmula que non se utiliza.

Algunhas limitacións das fórmulas con nome:

  • Non poden usar funcións de comportamento nin causar efectos secundarios na aplicación.
  • Non poden crear unha referencia circular. Non se permite ter a = b; e b = a; na mesma aplicación.

Propiedade OnError

Use OnError para tomar medidas despois de que se detecte un erro. Ofrece unha oportunidade global para interceptar unha faixa de erro antes de que se mostre ao usuario final. Tamén se pode usar para rexistrar un erro coa función Rastrexar ou escribir nunha base de datos ou servizo web.

O resultado de cada avaliación de fórmulas compróbase para detectar un erro. Se se trata dun erro, OnError avaliarase coas mesmas variables de ámbito FirstError e AllErrors que estarían presentes se toda a fórmula estivese envolta nunha función IfError .

Se OnError está baleiro, móstrase unha faixa de erro predeterminado coa FirstError.Message do erro. A definición dunha fórmula OnError anula este comportamento, o que permite ao creador xestionar os informes de erros segundo o considere oportuno. O comportamento predefinido pódese solicitar en OnError volvendo lanzar o erro coa función Erro. Isto é útil se algúns erros se deben filtrar ou tratar dun xeito diferente, mentres que outros se deben pasar.

OnError non pode substituír un erro nos cálculos como IfError pode facelo. No momento en que se invoca OnError, o erro xa se produciu e xa se procesou mediante cálculos de fórmulas. *OnError* só controla os informes de erros.

As fórmulas OnError avalíanse simultaneamente e é posible que a súa avaliación se solape co procesamento doutros erros. Por exemplo, se establece unha variable global na parte superior dun OnError e a le máis tarde na mesma fórmula, é posible que o valor cambiase. Use a función Conpara crear un valor con nome que sexa local da fórmula.

Aínda que OnError procesa cada erro individualmente, é posible que a faixa de erro predefinida non apareza para cada erro individualmente. Para evitar que se mostren demasiadas faixas de erro ao mesmo tempo, o mesmo erro non activará unha nova faixa de erro se se mostrou recentemente.

Exemplo

Considere un control Etiqueta e un control Barra de desprazamento que están unidos mediante a fórmula:

Label1.Text = 1/Slider1.Value

Control de etiqueta e control deslizante limitado a través da fórmula Etiqueta1.Texto = 1/Deslizador1.Valor.

O valor predefinido da barra de desprazamento e 50. Se a barra de desprazamento se move a 0, Label1 non mostrará ningún valor e móstrase unha faixa de erro:

O control deslizante moveuse a 0, o que provocou un erro de división por cero e un banner de erro.

Vexamos o que pasou en detalle:

  1. O usuario moveu a barra de desprazamento cara á esquerda e a propiedade Slide1.Value cambiou a 0.
  2. Label1.Text volveuse avaliar automaticamente. Produciuse a división por cero, xerando un erro.
  3. Non hai IfError nesta fórmula. O erro de división por cero é devolto pola avaliación da fórmula.
  4. Label1.Text non pode mostrar nada para este erro, polo que mostra un estado en branco .
  5. Invócase OnError . Como non hai un controlador, móstrase a faixa de erro estándar con información de erro.

Se é necesario, tamén podemos modificar a fórmula a Label1.Text = IfError( 1/Slider1.Value, 0 ). Isto produciría ningún erro ou faixa de erro. Non podemos cambiar o valor dun erro de OnError xa que nese momento xa ocorreu o erro, só se trata de como se informará.

Se engadimos un controlador OnError , non terá ningún impacto antes do paso 5, pero pode afectar á forma en que se informa do erro:

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

Fórmula App.OnError definida para xerar un rastrexo.

Con isto feito, desde a perspectiva do usuario da aplicación, non haberá ningún erro. Pero o erro engadirase ao rastrexo de Monitor, completo coa fonte da información do erro de FirstError:

O control deslizante moveuse a 0, o que provocou un erro de división por cero, pero sen pancarta de erro.

Se tamén queriamos mostrar a mesma faixa de erro predefinido ademais do rastrexo, podemos volver lanzar o erro coa función Erro despois da chamada Trace igual que se fixo se Trace non estaba alí:

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

Propiedade OnStart

Nota

O uso da propiedade OnStart pode causar problemas de rendemento ao cargar unha aplicación. Estamos en proceso de crear alternativas para os dous principais motivos para usar a propiedade: almacenar datos en caché e configurar variables globais. Xa creamos unha alternativa para definir a primeira pantalla que se mostrará con Navigate. Dependendo do seu contexto, esta propiedade pode estar desactivada de forma predeterminada. Se non a ve e necesita usala, comprobe a configuración avanzada da aplicación para ver un interruptor para activala. A propiedade OnVisible dunha pantalla tamén se pode usar.

A propiedade OnStart execútase cando o usuario inicia a aplicación. Esta propiedade úsase a miúdo para realizar as seguintes tarefas:

  • Recuperar e almacenar datos en caché en coleccións mediante a función Collect.
  • Configurar variables globais utilizando a función Set.

Esta fórmula avalíase antes de que apareza a primeira pantalla. Non se carga ningunha pantalla, polo que non pode establecer variables de contexto coa función UpdateContext. Non obstante, pode pasar variables de contexto coa función Navigate.

Despois de cambiar a propiedade OnStart, próbea pasando o rato sobre o obxecto Aplicación no panel Vista en árbore, seleccionando os puntos suspensivos (...) e, a continuación, seleccionando Executar OnStart. Ao contrario de cando a aplicación se carga por primeira vez, as coleccións e variables existentes xa estarán configuradas. Para comezar coas coleccións baleiras, use a función ClearCollect en vez da función Collect.

Menú de atallos a elementos da aplicación de Executar OnStart

Nota

  • O uso da función Navigate na propiedade OnStart foi retirado. As aplicacións existentes seguirán funcionando. Durante un tempo limitado, aínda pode activala na configuración da aplicación (dispoñible en Retirado). Non obstante, usar Navegar deste xeito pode provocar atrasos na carga da aplicación xa que obriga ao sistema a completar a avaliación de OnStart antes de mostrar a primeira pantalla. Use a Retirado StartScreen no seu lugar para calcular a primeira pantalla mostrada.
  • O interruptor Retirado desactivarase para as aplicacións creadas antes de marzo de 2021 nas que engadiu Navegar a OnStart entre marzo de 2021 e agora. Cando edita este tipo de aplicacións en Power Apps Studio, pode ver un erro. Mude o interruptor mencionado anteriormente Retirado para borrar este erro.

Propiedade StartScreen

Nota

A propiedade StartScreen non aparecerá na lista de propiedades cando a opción retirada Barra de fórmulas mellorada estea activada. Para desactivar Barra de fórmulas mellorada , vaia a Configuración>Próximas funcións>Retirada> desactiva o interruptor Barra de fórmulas mellorada cando queira usar a propiedade StartScreen.

A propiedade StartScreen determina que pantalla se mostrará primeiro. Avalíase unha vez cando se carga a aplicación e devolve o obxecto da pantalla que se mostrará. De forma predeterminada, esta propiedade estará baleira e móstrase primeiro a primeira pantalla da vista de árbore de Studio.

StartScreen é unha propiedade de fluxo de datos que non pode conter funcións de comportamento. Todas as funcións de fluxo de datos están dispoñibles, en particular, use estas funcións e sinais para determinar que pantalla mostrar primeiro:

Nota

As variables e coleccións globais, incluídas as creadas en OnStart, non están dispoñibles en StartScreen. Hai alternativas declarativas para facelo que están en camiño. Para obter comentarios sobre esta restrición, vaia ao foro comunitario de Power Apps.

Se StartScreen devolve un erro, a primeira pantalla da vista de árbore de Studio amosarase coma se StartScreen non fose establecido. Use a función IfError para detectar calquera erro e redirixilo a unha pantalla de erro adecuada.

Despois de cambiar StartScreen en Studio, próbea pasando o rato sobre o obxecto Aplicación no panel Vista en árbore, seleccionando os puntos suspensivos (...) e, a continuación, seleccionando Navegar a StartScreen. A pantalla cambiará coma se se cargase a aplicación.

Ir a StartScreen

Exemplos

Screen9

Indica que Screen9 debe mostrarse primeiro cando se inicie a aplicación.

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

Comproba se o parámetro "modo de administración" foi definido polo usuario e utilízao para decidir se a HomeScreen ou a AdminScreen debe mostrarse primeiro.

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

Comproba se un asistente a unha conferencia é un membro do persoal e diríxeo á pantalla adecuada ao iniciar.

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

Dirixe a aplicación baseándose nunha chamada de API a ForestScreen ou OceanScreen. Se a API falla por algún motivo, a ErrorScreen úsase no seu lugar.

Propiedade StudioVersion

Usa a propiedade StudioVersion para mostrar ou rexistrar a versión de Power Apps Studio que se utilizou para publicar unha aplicación. Isto pode ser útil ao depurar e asegurarse de que a súa aplicación se volveu publicar cunha versión recente de Power Apps Studio.

StudioVersion devólvese como texto. O formato do texto pode cambiar co paso do tempo e debe ser tratado como un todo; evitar extraer porcións individuais.