Obxecto da aplicación en Power Apps

Aplícase a: aplicacións Canvas

Obtén información sobre a aplicación en execución e controla o comportamento da aplicación.

Description

Do mesmo xeito que un control, o obxecto App ten propiedades que identifican a pantalla que se mostra e pídenlle que garde os cambios para que non se perdan. Cada aplicación ten un obxecto da aplicación.

Escribe fórmulas para algunhas propiedades do obxecto App . Na parte superior da Visualización en árbore selecciona o obxecto da aplicación como faría con calquera outro control ou pantalla. Para ver ou editar unha das propiedades do obxecto, seleccionala na lista despregable á esquerda da barra de fórmulas.

Captura de pantalla do obxecto App seleccionado no panel Vista en árbore. O panel de propiedades está visible.

ActiveScreen property

A propiedade ActiveScreen identifica a pantalla que se mostra actualmente.

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

Use a función Atrás ou Navegar para cambiar a pantalla que se amosa.

BackEnabled property

A propiedade BackEnabled cambia a forma en que a aplicación responde ao xesto de retroceso do dispositivo (deslizar o dedo ou usar o botón de retroceso de hardware en dispositivos Android ou pasar o dedo desde a esquerda en dispositivos iOS) cando se executa en Power Apps móbiles. Cando está activado, o xesto de retroceso do dispositivo volve á pantalla que se mostrou máis recentemente, que é similar á fórmula de atrás . Cando está desactivado, o xesto de retroceso do dispositivo leva ao usuario á lista de aplicacións.

ConfirmExit properties

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

Note

  • ConfirmExit non funciona en aplicacións incrustadas, por exemplo, en Power BI e SharePoint.
  • ConfirmExit non está soportado en páxinas personalizadas.
  • Agora, estas propiedades poden facer referencia a controis só na primeira pantalla se a función de vista previa de carga atrasada está activada (que é por defecto para novas aplicacións). Se fai referencia a outras pantallas, Power Apps Studio non mostra un erro, pero a aplicación publicada non se abre en Power Apps Mobile ou nun navegador. Estamos traballando para levantar esta limitación. Mentres tanto, desactiva a carga atrasada en Configuración>Próximas funcións (en Vista previa).

ConfirmExit

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

Cando o usuario poida ter cambios non gardados na aplicación, use esta propiedade para mostrar unha caixa de diálogo de confirmación antes de saír da aplicación. Use unha fórmula que comprobe as variables e as propiedades do control (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 poidan perder datos, como:

  • Executa a función de saída .
  • Se a aplicación se executa nun navegador:
    • Pecha o navegador ou a pestana do navegador onde se executa a aplicación.
    • Seleccione o botón de atrás do navegador.
    • Executa a función Launch cun LaunchTarget de Self.
  • Se a aplicación se executa en Power Apps Mobile (iOS ou Android):
    • Desliza o dedo para cambiar a outra aplicación en Power Apps Mobile.
    • Seleccione o botón de atrás nun dispositivo Android.
    • Executa a función Launch para iniciar outra aplicación de lenzo.

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

A caixa de diálogo de confirmación non se mostra 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 son truncadas segundo sexa necesario para encaixar na caixa de diálogo de confirmación, polo que manteña a mensaxe nunhas poucas liñas como máximo.

Nun navegador, a caixa de diálogo de confirmación pode mostrar unha mensaxe xenérica do navegador.

Note

O obxecto App ten dúas propiedades OnMessage máis e BackEnabled, que son experimentais. Estas propiedades elimínanse do obxecto da aplicación. Non empregue estas propiedades no seu entorno de produción.

Example

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

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    A caixa de diálogo mostra se o usuario cambia os datos en calquera dos dous formularios e, a continuación, intenta pechar a aplicación sen gardar eses cambios. O usuario cambia os datos en calquera dos dous formularios e logo intenta pechar a aplicación sen gardar eses cambios.

    [!div clas1. 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."
    )
    

    A caixa de diálogo mostra se o usuario cambia os datos no formulario Conta e, a continuación, intenta pechar a aplicación sen gardar eses cambios.

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

Configurar a cadea de conexión para Application Insights

Para exportar os rexistros de aplicacións xerados polo sistema a Application Insights, configure a cadea de conexión para a aplicación de lenzo.

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

Se os datos non se envían a Application Insights, póñase en contacto co administrador de Power Platform e comprobe se App Insights está desactivado a nivel de inquilino.

Formulas property

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 fórmulas determinan o valor das propiedades de control. 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 inesperadamente, pero esta situación difícil de depurar 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. Volven a calcular automaticamente como as celas dunha folla de cálculo e 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 de fórmula dedúcese a partir dos tipos de elementos da fórmula e de 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.

Funcións definidas polo usuario

Power Fx inclúe unha longa lista de funcións integradas, como Se, Texto e a6> Definir. As funcións definidas polo usuario permítenche escribir as súas propias funcións que toman parámetros e devolven un valor, tal e como fan as funcións integradas. Podes pensar nas funcións definidas polo usuario como unha extensión de fórmulas con nome que engade parámetros e admite fórmulas de comportamento.

Por exemplo, pode definir unha fórmula con nome que devolva libros de ficción dunha biblioteca:

Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
            { Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];

LibraryFiction = Filter( Library, Genre = "Fiction" );

Sen parámetros, necesitaríamos definir fórmulas nomeadas separadas para cada xénero. Pero en vez diso, imos parametrizar a nosa fórmula nomeada:

LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );

LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );

Agora podemos chamar LibraryGenre( "Fiction" ), LibraryGenre( "Reference" ) ou filtrar outros xéneros cunha única función definida polo usuario.

A sintaxe é:

FunctionName( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ): ReturnType = Fórmula;

  • FunctionName – Obrigatorio. O nome da función definida polo usuario.
  • ParameterNames – Opcional. O nome dun parámetro de función.
  • ParameterTypes – Opcional. O nome dun tipo, xa sexa un nome de tipo de datos integrado, un nome orixe de datos ou un tipo definido co Tipo función.
  • ReturnType – Obrigatorio. O tipo de valor de retorno da función.
  • Fórmula – Obrigatorio. A fórmula que calcula o valor da función en función dos parámetros.

Debe teclear cada parámetro e a saída da función que define o usuario. Neste exemplo, SelectedGenre: Text define que o primeiro parámetro da nosa función sexa de tipo Texto e SelectedGenre é o nome do parámetro que se usa no corpo para a operación Filtro operación. Consulte Tipos de datos para os nomes de tipos admitidos. A función Tipo utilízase para crear un tipo agregado para a nosa biblioteca, de xeito que poidamos devolver unha táboa de libros da nosa función.

Definimos LibraryType como unha táboa plural do tipo de rexistros. Se queremos pasar un só libro a unha función, podemos extraer o tipo de rexistro para esta táboa coa función RecordOf función:

BookType := Type( RecordOf( LibraryType ) );

IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);

A coincidencia de rexistros dos parámetros de función é máis rigorosa que noutras partes de Power Fx. Os campos dun valor de rexistro deben ser un subconxunto adecuado da definición de tipo e non poden incluír campos adicionais. Por exemplo, IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" ) producirá un erro.

Teña en conta que as funcións definidas polo usuario aínda non admiten a recursividade.

Funcións definidas polo usuario de comportamento

As fórmulas con nome e a maioría das funcións definidas polo usuario non admiten funcións de comportamento con efectos secundarios, como Establecer ou Notificar. En xeral, o mellor é evitar actualizar o estado se pode, en lugar de depender de patróns de programación funcionais e permitir Power Fx recalcular as fórmulas automaticamente segundo sexa necesario. Pero, hai casos nos que é inevitable. Para incluír a lóxica de comportamento nunha función definida polo usuario, Embalar o corpo entre chaves:

Spend( Amount: Number ) : Void = {
    If( Amount > Savings, 
        Error( $"{Amount} is more than available savings" ),
        Set( Savings, Savings - Amount );
        Set( Spent, Spent + Amount) 
    );
}

Agora podemos chamar Spend( 12 ) para comprobar se temos 12 nos nosos Aforros e, se é así, para cargalo en 12 e engadir 12 á variable Gastos. O tipo de retorno desta función é Void xa que non devolve un valor.

A sintaxe dunha función definida polo usuario de comportamento é:

FunctionName( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Fórmula1 [ ; Fórmula2 . .. ] };

  • FunctionName – Obrigatorio. O nome da función definida polo usuario.
  • ParameterNames – Opcional. O nome dun parámetro de función.
  • ParameterTypes – Opcional. O nome dun tipo, xa sexa un nome de tipo de datos integrado, un nome orixe de datos ou un tipo definido co Tipo función.
  • ReturnType – Obrigatorio. O tipo de valor de retorno da función. Use Void se a función non devolve un valor.
  • Fórmulas – Obrigatorio. A fórmula que calcula o valor da función en función dos parámetros.

Do mesmo xeito que con todas as fórmulas Power Fx , a execución non remata cando se atopa un erro. Despois de chamar á función Erro función , a función /a33>impide os cambios para Aforro e Gasto de que se produza. Tamén se pode usar a función IfError para evitar que se siga executando despois dun erro. Aínda que devolve Void, a fórmula aínda pode devolver un erro se hai algún problema.

Tipos definidos polo usuario

As fórmulas con nome pódense usar coa función Tipo para crear tipos definidos polo usuario. Use := en lugar de = para definir un tipo definido polo usuario, por exemplo Book := Type( { Title: Text, Author: Text } ). Consulta a función Tipo para obter máis información e exemplos.

OnError property

Use OnError para tomar medidas cando se produza un erro en calquera parte da aplicación. Ofrece unha oportunidade global para interceptar un banner de erro antes de ser mostrado 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.

Nas aplicacións Canvas, o resultado de cada avaliación de fórmulas compróbase para detectar un erro. Se se atopa un erro, OnError avalíase co mesmo FirstError e AllErrors variables de ámbito que serían usadas se se envolvese toda a fórmula unha función IfError.

Se OnError está baleiro, un banner de erro predeterminado mostra a FirstError.Message do erro. Definir unha fórmula OnError anula este comportamento, polo que o creador pode xestionar o informe de erros segundo sexa necesario. Pode solicitar o comportamento predeterminado en OnError relanzando o erro coa función Error. Use o enfoque de relanzamento se quere filtrar ou manexar algúns erros de xeito diferente, pero deixa pasar outros.

OnError non pode substituír un erro nos cálculos do xeito que pode IfError . Se se invoca OnError , o erro xa ocorreu e xa se procesou mediante cálculos de fórmulas como IfError; OnError só controla os informes de erros.

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

Aínda que cada erro é procesado individualmente por OnError, o banner de erro predeterminado pode non aparecer para cada erro individualmente. Para evitar que se mostren demasiados banners de erro ao mesmo tempo, o mesmo banner de erro non se mostrará de novo se se mostrou recentemente.

Example

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 podes cambiar a fórmula a Label1.Text = IfError( 1/Slider1.Value, 0 ). O uso de IfError significa que non hai ningún erro ou banner de erro. Non podes cambiar o valor dun erro de OnError porque o erro xa ocorreu: OnError só controla como se informa.

Se engade un xestor OnError , non afecta aos pasos anteriores ao paso 5, pero cambia a forma en que se informa do erro:

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

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

Con este xestor OnError , o usuario da aplicación non ve ningún erro. Pero o erro engádese ao rastro do monitor, incluíndo a fonte da información de 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 queres mostrar o banner de erro predeterminado xunto co rastrexo, relanza o erro coa función Error despois da chamada Trace , como se o Trace non estivese alí:

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

OnStart property

Note

O uso da propiedade OnStart pode causar problemas de rendemento ao cargar unha aplicación. Estamos creando alternativas para as dúas principais razóns para usar esta propiedade: almacenar datos en caché e configurar variables globais. Xa hai unha alternativa para definir a primeira pantalla para mostrar con Navigate. Dependendo do contexto, esta propiedade pode ser desactivada por defecto. Se non o ves e necesitas usalo, comproba a configuración avanzada da aplicación para un interruptor para activalo. Tamén podes usar a propiedade OnVisible dunha pantalla. Por defecto, cando a regra OnStart non bloqueada está activada, permite que a función OnStart se execute ao mesmo tempo que outras regras da aplicación. Así, se as variables referenciadas noutras regras da aplicación son inicializadas dentro da función OnStart , é posible que aínda non estean completamente inicializadas. Ademais, unha pantalla pode renderizarse e converterse en interactiva antes de que as funcións Screen.OnVisible ou App.OnStart terminen de executarse, especialmente se tardan moito en rematar.

A propiedade OnStart execútase cando o usuario inicia a aplicación. Esta propiedade úsase con frecuencia para:

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

Esta fórmula funciona antes de que apareza a primeira pantalla. Non se carga ningunha pantalla, polo que non pode establecer variables de contexto coa función UpdateContext. Podes pasar variables de contexto coa función Navegar .

Despois de cambiar a propiedade OnStart , probala pasando o rato sobre o obxecto App no panel Vista en árbore , seleccionando os puntos suspensivos (...) e, a seguir, seleccionando Executar OnStart. A diferenza de cando a aplicación se carga por primeira vez, as coleccións e variables existentes xa está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

Note

  • O uso da función Navegar na propiedade OnStart está retirado. As aplicacións existentes seguen funcionando. Por un tempo limitado, podes activalo na configuración da aplicación (en Retirado). Pero usar Navegar deste xeito pode causar atrasos na carga da aplicación porque obriga ao sistema a rematar de executar OnStart antes de mostrar a primeira pantalla. Use a propiedade StartScreen para establecer a primeira pantalla que se amosa.
  • O interruptor retirado está desactivado para as aplicacións creadas antes de marzo de 2021 nas que engadiu Navegar a OnStart entre marzo de 2021 e agora. Ao editar estas aplicacións en Power Apps Studio, pode ver un erro. Activa o interruptor retirado para borrar este erro.

StartScreen property

A propiedade StartScreen establece a pantalla que se mostra primeiro. Avalíase unha vez cando a aplicación se carga e devolve o obxecto de pantalla para mostrar. Por defecto, esta propiedade está baleira e a primeira pantalla da vista Árbore de Studio móstrase primeiro.

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. Use estas funcións e sinais para decidir que pantalla mostrar primeiro:

  • Param función para ler os parámetros utilizados para iniciar a aplicación.
  • Función de usuario para ler información sobre o usuario actual.
  • Buscar, Filtro, CountRows, Máx, e outras funcións que len desde un orixe de datos.
  • Chamadas API a través dun conector. Asegúrese de que a chamada volva rápido.
  • Sinais como Conexión, Compás e Aplicación.

Note

As variables e coleccións globais, incluídas as creadas en OnStart, non están dispoñibles en StartScreen. As fórmulas con nome están dispoñibles e adoitan ser unha mellor alternativa para a reutilización de fórmulas na aplicación.

Se StartScreen devolve un erro, a primeira pantalla na vista da árbore de Studio móstrase como se StartScreen non estivese configurado. Use a función IfError para detectar calquera erro e redirixir a unha pantalla de erros.

Despois de cambiar a pantalla de inicio en Studio, probala pasando o rato sobre o obxecto Aplicación no panel de vista en árbore , seleccionando os puntos suspensivos (...) e, a seguir, seleccionando Navegar á pantalla de inicio. A pantalla cambia como se a aplicación acabase de cargar.

Ir a StartScreen

Examples

Screen9

Screen9 Aparece primeiro cada vez que se inicia a aplicación.

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

Comproba se o parámetro "admin-mode" está configurado e utilízao para decidir se HomeScreen ou AdminScreen aparece primeiro.

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

Comproba se un asistente é un membro do persoal e diríxeo á pantalla correcta ao inicio.

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, a aplicación usa ErrorScreen no seu lugar.

StudioVersion property

Use a propiedade StudioVersion para mostrar ou rexistrar a versión de Power Apps Studio usada para publicar unha aplicación. Esta propiedade axuda cando estás depurando e comprobando que a túa aplicación está republicada cunha versión recente de Power Apps Studio.

StudioVersion devolve texto. O formato deste texto pode cambiar co paso do tempo, así que trátao como un todo e non extraiga partes individuais.