Share via


Oggetto App in Power Apps

Si applica a: App canvas App basate su modello

Fornisce informazioni sull'app attualmente in esecuzione e il controllo sul comportamento dell'app.

Descrizione

Come un controllo, l'oggetto App fornisce proprietà che identificano quale schermata viene visualizzata e che richiedono all'utente di salvare le modifiche in modo che non vengano perse. Ogni app ha un oggetto App.

Puoi scrivere le formule per alcune proprietà dell'oggetto App. Nella parte superiore del riquadro Visualizzazione ad albero, seleziona l'oggetto App come qualsiasi altro controllo o schermo. Visualizza e modifica una delle proprietà dell'oggetto selezionandola nell'elenco a discesa a sinistra della barra della formula.

L'oggetto App nel riquadro Visualizzazione ad albero.

Proprietà ActiveScreen

La proprietà ActiveScreen identifica la schermata visualizzata.

Questa proprietà restituisce un oggetto schermo. Usalo per fare riferimento alle proprietà della schermata attualmente visualizzata, come il nome con la formula App.ActiveScreen.Name. Puoi anche confrontare questa proprietà con un altro oggetto della pagina, ad esempio con la formula di confronto App.ActiveScreen = Schermo2 per testare se Screen2 è la schermata attualmente visualizzata.

Usa la funzione Back o Navigate per cambiare la schermata visualizzata.

Proprietà BackEnabled

La proprietà BackEnabled modifica il modo in cui l'app risponde al gesto indietro del dispositivo (scorri o utilizza il pulsante Indietro sui dispositivi Android, scorri da sinistra sui dispositivi iOS) quando eseguita in Power Apps per dispositivi mobili. Se abilitata, il gesto Indietro del dispositivo torna alla schermata visualizzata più di recente. Questo comportamento è simile a quello della formula Back. Quando disabilitata, il gesto indietro del dispositivo riporta l'utente all'elenco delle app.

Proprietà ConfirmExit

Nessuno vuole perdere le modifiche non salvate. Usa le proprietà ConfirmExit e ConfirmExitMessage per avvisare l'utente prima che chiuda l'app.

Nota

  • ConfirmExit non funziona nelle app integrate, ad esempio, Power BI e SharePoint.
  • Al momento, queste proprietà possono fare riferimento ai controlli solo sulla prima schermata se la funzione Delayed load di anteprima è abilitata (come per impostazione predefinita per le nuove app). Se vengono fatti riferimenti, Power Apps Studio non mostra un errore, ma l'app pubblicata risultante non si apre in Power Apps per dispositivi mobili o un browser. Questa limitazione è in fase di risoluzione. Nel frattempo puoi disabilitare Carico ritardato in Impostazioni>Funzionalità in arrivo (in Anteprima).

ConfirmExit

ConfirmExit è una proprietà booleana che, quando è true, apre una finestra di dialogo di conferma prima della chiusura dell'app. Per impostazione predefinita, questa proprietà è false e non viene visualizzata alcuna finestra di dialogo.

Nelle situazioni in cui l'utente potrebbe avere modifiche non salvate nell'app, utilizza questa proprietà per mostrare una finestra di dialogo di conferma prima di uscire dall'app. Utilizza una formula che può controllare le variabili e le proprietà di controllo (ad esempio, la proprietà Unsaved del controllo Edit form).

La finestra di dialogo di conferma appare in qualsiasi situazione in cui i dati potrebbero andare persi, come in questi esempi:

  • Esecuzione della funzione Exit.
  • Se l'app è in esecuzione in un browser:
    • Chiusura del browser o della scheda del browser in cui l'app è in esecuzione.
    • Selezione del pulsante Indietro del browser.
    • Esecuzione della funzione Launch con LaunchTarget di Self.
  • Se l'app è in esecuzione in Power Apps Mobile (iOS o Android):
    • Scorrimento rapido per passare a un'altra app in Power Apps per dispositivi mobili.
    • Selezione del pulsante Indietro su un dispositivo Android.
    • Esecuzione della funzione Launch per avviare un'altra app canvas.

L'aspetto esatto della finestra di dialogo di conferma potrebbe variare in base ai dispositivi e alle versioni di Power Apps.

La finestra di dialogo di conferma non viene visualizzata in Power Apps Studio.

ConfirmExitMessage

Per impostazione predefinita, la finestra di dialogo di conferma mostra un messaggio generico, ad esempio "Potresti avere modifiche non salvate". nella lingua dell'utente.

Usa ConfirmExitMessage per fornire un messaggio personalizzato nella finestra di dialogo di conferma. Se questa proprietà è vuota, viene utilizzato il valore predefinito. I messaggi personalizzati vengono troncati, se necessario, per rientrare nella finestra di dialogo di conferma, quindi mantieni il messaggio al massimo a poche righe.

In un browser, la finestra di dialogo di conferma potrebbe apparire con un messaggio generico dal browser.

Nota

L'oggetto app ha altre due proprietà, ovvero OnMessage e BackEnabled, che sono sperimentali. Queste proprietà verranno rimosse dall'oggetto app. Ti consigliamo di non utilizzare queste proprietà nell'ambiente di produzione.

Esempio

  1. Crea un'app che contiene due controlli del modulo, AccountForm e ContactForm.

  2. Imposta la proprietà ConfirmExit dell'oggetto App su questa espressione:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Questa finestra di dialogo viene visualizzata se l'utente modifica i dati in uno dei due moduli e quindi tenta di chiudere l'app senza salvare le modifiche.

    Finestra di dialogo di conferma generica.

  3. Imposta la proprietà ConfirmExitMessage dell'oggetto App su questa formula:

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

    Questa finestra di dialogo viene visualizzata se l'utente modifica i dati nel modulo Account e quindi tenta di chiudere l'app senza salvare le modifiche.

    Finestra di dialogo di conferma specifica del modulo.

Configurare la chiave di strumentazione per Application Insights

Per esportare i log dell'applicazione generati dal sistema in Application Insights, devi configurare la Chiave di strumentazione per la tua app canvas.

  1. Apri la tua app per la modifica in Power Apps Studio.
  2. Selezionare l'oggetto App nella visualizzazione ad albero del riquadro di spostamento.
  3. Inserisci la chiave della strumentazione nel riquadro delle proprietà.

Se i dati non vengono inviati ad App Insights, contatta il tuo amministratore di Power Platform e verifica se App Insights è disabilitato a livello di tenant.

Proprietà Formulas

Utilizza formule con nome nella proprietà Formulas per definire una formula che può essere riutilizzata in tutta l'app.

In Power Apps, le proprietà di controllo sono determinate da formule. Ad esempio, per impostare il colore di sfondo in modo coerente in un'app, potresti impostare la proprietà Fill su una formula comune:

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

Con così tanti elementi in cui questa formula può apparire, diventa noioso e soggetto a errori aggiornarli tutti se è necessaria una modifica. Puoi invece creare una variabile globale in OnStart per impostare il colore una volta e quindi riutilizzare il valore nell'intera app:

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

Questo metodo è migliore, ma è necessario eseguire prima OnStart per poter impostare il valore di BGColor. BGColor potrebbe anche essere modificato da qualcun altro e se l'autore non è a conoscenza di tale modifica, può risultare difficile identificarla.

Le formule con nome forniscono un'alternativa. Proprio come in genere scriviamo proprietà di controllo = espressione, possiamo invece scrivere nome = espressione e quindi riutilizzare nome in tutta l'app per sostituire espressione. Le definizioni di queste formule vengono eseguite nella proprietà Formulas:

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

I vantaggi derivanti dall'utilizzo di formule con nome sono:

  • Il valore della formula è sempre disponibile. Non c'è dipendenza temporale, nessuna proprietà OnStart che deve essere eseguita prima affinché il valore venga impostato, nessun momento in cui il valore della formula non è corretto. Le formule con nome possono farsi riferimento a vicenda in qualsiasi ordine, purché non creino un riferimento circolare. Possono essere calcolate in parallelo.
  • Il valore della formula è sempre aggiornato. La formula può eseguire un calcolo che dipende dalle proprietà di controllo o dai record del database e quando questi cambiano, il valore della formula si aggiorna automaticamente. Non devi aggiornare manualmente il valore come avviene con una variabile. Inoltre, le formule vengono ricalcolate solo quando necessario.
  • La definizione della formula è immutabile. La definizione in Formulas è l'unica origine di riferimento e il valore non può essere modificato altrove nell'app. Con le variabili, è possibile che del codice modifichi inaspettatamente un valore, ma ciò non è possibile con le formule con nome.
  • Il calcolo della formula può essere differito. Poiché il relativo valore è immutabile, può sempre essere calcolato al momento opportuno, il che significa che non serve calcolarlo finché non sarà necessario. I valori della formula che non vengono utilizzati fino a che non viene visualizzato screen2 di un'app, non devono essere calcolati fino a che screen2 non è visibile. Il rinvio può migliorare il tempo di caricamento dell'app. Le formule con nome sono dichiarative e offrono al sistema opportunità di ottimizzare come e quando vengono calcolate.
  • Le formule con nome sono un concetto di Excel. Power Fx utilizza i concetti di Excel quando possibile poiché tante persone conoscono Excel. Le formule con nome sono l'equivalente delle celle con nome e delle formule con nome in Excel, gestite con Gestione nomi. Vengono ricalcolate automaticamente come un foglio di calcolo, esattamente come avviene con le proprietà di controllo.

Le formule con nome sono definite una dopo l'altra nella proprietà Formulas e ognuna termina con un punto e virgola. Il tipo della formula viene dedotto dai tipi dell'espressione, che si basa sui tipi degli elementi all'interno dell'espressione e su come vengono utilizzati insieme. Ad esempio, queste formule con nome recuperano informazioni utili sull'utente corrente da 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 la formula per UserTitle deve essere aggiornata, l'aggiornamento può essere eseguito facilmente in questa posizione. Se UserPhone non è necessario nell'app, le chiamate alla tabella Utenti in Dataverse non vengono eseguite. Non è prevista alcuna penalità per l'inclusione di una definizione di formula che non viene utilizzata.

Alcune limitazioni delle formule con nome:

  • Non possono utilizzare funzioni di comportamento in quanto possono causare effetti collaterali nell'app.
  • Non possono creare un riferimento circolare. Avere a = b; e b = a; nella stessa app non è consentito.

Proprietà OnError

Utilizza OnError per intervenire dopo che è stato rilevato un errore. Fornisce un'opportunità globale per intercettare un banner di errore prima che risulti visibile all'utente finale. Può anche essere utilizzato per registrare un errore con la funzione Trace o scrivere in un database o un servizio web.

Il risultato di ogni valutazione della formula viene controllato per verificare la presenza di un errore. Se è un errore, OnError sarà valutato con le stesse variabili di ambito FirstError e AllErrors che sarebbero state presenti se l'intera formula fosse stata racchiusa in una funzione IfError.

Se OnError è vuoto, viene visualizzato un banner di errore predefinito con FirstError.Message dell'errore. La definizione di una formula OnError sovrascrive questo comportamento consentendo al produttore di gestire la segnalazione degli errori come meglio crede. Il comportamento predefinito può essere richiesto in OnError rigenerando l'errore con la funzione Error. Ciò è utile se alcuni errori devono essere filtrati o gestiti in modo diverso, mentre altri devono essere ignorati.

OnError non può sostituire un errore nei calcoli come fa IfError. Nel momento che OnError viene richiamato, l'errore si è già verificato ed è già stato elaborato tramite calcoli di formule. *OnError* controlla solo la segnalazione degli errori.

Le formule OnError vengono valutate contemporaneamente ed è possibile che la loro valutazione si sovrapponga all'elaborazione di altri errori. Ad esempio, se imposti una variabile globale all'inizio di un OnError e la leggi più avanti nella stessa formula, il valore potrebbe essere cambiato. Usa la funzione With per creare un valore denominato che sia locale nella formula.

Sebbene ogni errore venga elaborato individualmente da OnError, il banner di errore predefinito potrebbe non essere visualizzato singolarmente per ogni errore. Per evitare che vengano visualizzati troppi banner di errore contemporaneamente, lo stesso errore non attiverà un nuovo banner di errore se è stato mostrato di recente.

Esempio

Considera un controllo Label e un controllo Slider che sono legati tra loro attraverso la formula:

Label1.Text = 1/Slider1.Value

Controllo label e slider associati tramite la formula Label1.Text = 1/Slider1.Value.

Per impostazione predefinita, il controllo slider è impostato su 50. Se slider viene spostato su 0, Label1 non mostrerà alcun valore e verrà visualizzato un banner di errore:

Il controllo slider è stato spostato su 0, determinando un errore di divisione per zero e un banner di errore.

Vediamo cosa è successo nel dettaglio:

  1. L'utente ha spostato il dispositivo di scorrimento a sinistra e la proprietà Slide1.Value è diventata 0.
  2. Label1.Text è stato rivalutato automaticamente. Si è verificata una divisione per zero, generando un errore.
  3. Non c'è IfError in questa formula. L'errore di divisione per zero viene restituito dalla formula di valutazione.
  4. Label1.Text non può mostrare nulla per questo errore, quindi mostra uno stato vuoto.
  5. OnError viene richiamato. Poiché non esiste un gestore, viene visualizzato il banner di errore standard con le informazioni sull'errore.

Se necessario, potremmo anche modificare la formula in Label1.Text = IfError( 1/Slider1.Value, 0 ). Ciò comporterebbe nessun errore o banner di errore. Non possiamo modificare il valore di un errore in OnError poiché a quel punto l'errore è già avvenuto; è solo questione di come verrà segnalato.

Se aggiungiamo un gestore OnError non avrà alcun impatto prima del passaggio 5, ma può influire sul modo in cui viene segnalato l'errore:

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

Formula App.OnError impostata per generare una traccia.

Con questo in atto, dal punto di vista dell'utente dell'app, non ci saranno errori. Ma l'errore verrà aggiunto alla traccia di Monitor, completo dell'origine delle informazioni sull'errore da FirstError:

Il controllo slider è stato spostato su 0, determinando un errore di divisione per zero ma nessun banner di errore.

Se volessimo anche visualizzare lo stesso banner di errore predefinito oltre alla traccia, possiamo rigenerare l'errore con la funzione Error dopo la chiamata Traccia proprio come se Traccia non fosse presente:

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

Proprietà OnStart

Nota

L'uso della proprietà OnStart può causare problemi di prestazioni durante il caricamento di un'app. Stiamo creando alternative per i due principali motivi per utilizzare la proprietà: memorizzazione nella cache dei dati e impostazione delle variabili globali. Abbiamo già creato un'alternativa per definire la prima schermata da mostrare con Esplora. A seconda del contesto, questa proprietà potrebbe essere disabilitata per impostazione predefinita. Se non la vedi e devi usarla, controlla le impostazioni avanzate dell'app e cerca un interruttore per abilitarla. Si può usare anche la proprietà OnVisible di uno schermo.

La proprietà OnStart viene eseguita quando l'utente avvia l'app. Questa proprietà viene spesso utilizzata per eseguire le seguenti attività:

  • Recupera e memorizza nella cache i dati nelle raccolte utilizzando la funzione Collect.
  • Imposta le variabili globali usando la funzione Set.

Questa formula viene calcolata prima che appaia la prima schermata. Non viene caricata alcuna schermata, quindi non è possibile impostare variabili di contesto con la funzione UpdateContext. Tuttavia, puoi passare variabili di contesto con la funzione Navigate.

Dopo aver modificato la proprietà OnStart, testala passando il mouse sopra l'oggetto App nel riqudro Visualizzazione ad albero selezionando i puntini di sospensione (...), quindi selezionando Esegui OnStart. A differenza di quando l'app viene caricata per la prima volta, le raccolte e le variabili esistenti saranno già impostate. Per iniziare con raccolte vuote, utilizza la funzione ClearCollect invece di Collect.

Menu di scelta rapida degli elementi dell'app per Esegui OnStart

Nota

  • L'uso della funzione Navigate nella proprietà OnStart è stata ritirata. Le app esistenti continueranno a funzionare. Per un periodo di tempo limitato, puoi ancora abilitarla nelle impostazioni dell'app (disponibile in Ritirato). Tuttavia, usando Esplora in questo modo può portare a ritardi nel caricamento dell'app in quanto costringe il sistema a completare la valutazione di OnStart prima di visualizzare la prima schermata. Utilizzare la proprietà StartScreen per calcolare la prima schermata visualizzata.
  • L'interruttore Ritirato verrà disattivato per le app create prima di marzo 2021 in cui hai aggiunto Esplora a OnStart da marzo 2021 ad oggi. Quando modifichi tali app in Power Apps Studio, potresti visualizzare un errore. Attiva l'interruttore Ritirato menzionato sopra per cancellare questo errore.

Proprietà StartScreen

Nota

La proprietà StartScreen non apparirà nell'elenco delle proprietà quando l'opzione ritirata Barra della formula migliorata è attivata. Per disattivare Barra della formula migliorata, vai a Impostazioni>Funzionalità in arrivo>Ritirato> disattiva l'interruttore Barra della formula migliorata quando vuoi usare la proprietà StartScreen.

La proprietà StartScreen determina quale schermata verrà visualizzata per prima. Viene valutata una volta quando l'app viene caricata e restituisce l'oggetto schermo da visualizzare. Per impostazione predefinita, questa proprietà è vuota e la prima schermata nella visualizzazione ad albero di Studio viene mostrata per prima.

StartScreen è una proprietà del flusso di dati che non può contenere funzioni di comportamento. Sono disponibili tutte le funzioni del flusso di dati, in particolare utilizza queste funzioni e segnali per determinare quale schermata visualizzare per prima:

  • Funzione Param per leggere i parametri utilizzati per avviare l'app.
  • Funzione User per leggere le informazioni sull'utente corrente.
  • LookUp, Filter, CountRows, Max e altre funzioni che leggono da un origine dati.
  • Qualsiasi chiamata API tramite un connettore, ma fai attenzione che venga restituita rapidamente.
  • Segnali come Connessione, Bussola, e App.

Nota

Variabili globali e raccolte, comprese quelle create in OnStart, non sono disponibili in StartScreen. Ci sono alternative dichiarative per eseguire le operazioni che sono in arrivo. Per il tuo feedback su questa limitazione, vai al Forum della community di Power Apps.

Se StartScreen restituisce un errore, la prima schermata nella visualizzazione ad albero di Studio verrà mostrata come se StartScreen non fosse stato impostato. Utilizza la funzione IfError per rilevare eventuali errori e reindirizzare a una schermata di errore appropriata.

Dopo aver modificato la proprietà StartScreen in Studio, testala passando il mouse sopra l'oggetto App nel riqudro Visualizzazione ad albero selezionando i puntini di sospensione (...), quindi selezionando Passa a StartScreen. Lo schermo cambierà come se l'app fosse stata caricata.

Passa a StartScreen

Esempi

Screen9

Indica che Screen9 deve essere mostrato per primo all'avvio dell'app.

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

Controlla se il parametro "admin-mode" è stato impostato dall'utente e lo usa per decidere se HomeScreen o AdminScreen deve essere visualizzata per prima.

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

Controlla se un partecipante a una conferenza è un membro del personale e lo indirizza alla schermata corretta all'avvio.

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

Indirizza l'app in base a una chiamata API a ForestScreen o OceanScreen. Se l'API non riesce per qualsiasi motivo, ErrorScreen viene utilizzato.

Proprietà StudioVersion

Usa la proprietà StudioVersion per visualizzare o registrare la versione Power Apps Studio utilizzata per pubblicare un'app. Ciò può essere utile durante il debug e per garantire che la tua app sia stata ripubblicata con una versione recente di Power Apps Studio.

StudioVersion viene restituito come testo. Il formato del testo può cambiare nel tempo e va trattato nel suo insieme; evita di estrarre singole porzioni.