Funzioni AsType e IsType

Si applica a: App canvas App basate su modello Interfaccia della riga di comando di Power Platform

Controlla un riferimento al record per un tipo di tabella specifico (IsType) e tratta il riferimento come un tipo specifico (AsType).

Nota

I comandi PAC CLI pac power-fx non supportano IsType.

Descrzione

Leggere Informazioni su riferimenti di record e ricerche polimorfiche per una più ampia introduzione e maggiori dettagli.

Un campo di ricerca di solito fa riferimento a record in una particolare tabella. Poiché il tipo di tabella è ben definito, è possibile accedere ai campi di ricerca utilizzando una semplice notazione con punto. Per esempio, First( Account ).'Contatto primario'.'Nome completo' passa dalla tabella Account al record Contatto primario nella tabella Contatti ed estrae il campo Nome completo.

Microsoft Dataverse supporta anche i campi di ricerca polimorfici, che possono fare riferimento a record di un set di tabelle, come in questi esempi.

Campo di ricerca Può fare riferimento a
Proprietario Utenti o Team
Cliente Account o Contatti
Tema Account, Contatti, Articoli della Knowledge Base, ecc.

Nelle formule dell'app canvas, usa i riferimenti ai record per utilizzare le ricerche polimorfiche. Poiché un riferimento a un record può fare riferimento a tabelle diverse, non sai quali campi saranno disponibili quando scrivi una formula. La notazione Record.Field non è disponibile. Tali formule devono adattarsi ai record rilevati dall'app durante l'esecuzione.

La funzione IsType verifica se il riferimento a un record fa riferimento a un tipo di tabella specifico. La funzione restituisce un valore booleano TRUE o FALSE.

La funzione AsType tratta il riferimento a un record come un tipo di tabella specifico, a volte indicato come cast. Puoi usare il risultato come se fosse un record della tabella e usare di nuovo la notazione Record.Field per accedere a tutti i campi di quel record. Un errore si verifica se il riferimento non è del tipo specifico.

Utilizza queste funzioni insieme per testare prima il tipo di tabella di un record e quindi trattarlo come un record di quel tipo in modo che i campi siano disponibili:

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

Queste funzioni sono necessarie solo se si accede ai campi di un riferimento di record. Ad esempio, è possibile utilizzare riferimenti di record nella funzione Filter senza IsType o AsType:

Filter( Accounts, Owner = First( Users ) )

Allo stesso modo, è possibile utilizzare riferimenti di record con la funzione Patch:

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

Se usato in un contesto record, come all'interno di un controllo Gallery o Edit form, potrebbe essere necessario utilizzare l'operatore di disambiguazione globale per fare riferimento al tipo di tabella. Ad esempio, questa formula sarebbe efficace per una raccolta che visualizza un elenco di contatti in cui Nome società è un campo di ricerca Cliente:

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Per entrambe le funzioni, specifichi il tipo attraverso il nome dell'origine dati che è connessa alla tabella. Affinché la formula funzioni, è anche necessario aggiungere un origine dati all'app per tutti i tipi per cui si desidera eseguire dei test o il cast. Ad esempio, è necessario aggiungere la tabella Utenti come origine dati se vuoi usare IsType e AsType con una ricerca e record di tipo Proprietario da quella tabella. Puoi aggiungere solo le origini dati che utilizzi effettivamente nella tua app; non è necessario aggiungere tutte le tabelle a cui potrebbe fare riferimento una ricerca.

Se il riferimento di record è blank, IsType restituisce FALSE e AsType restituisce blank. Tutti i campi di un record blank saranno blank.

Sintassi

AsType( RecordReference, TableType )

  • RecordReference: obbligatorio. Un riferimento di record, spesso un campo di ricerca che può fare riferimento a un record in una qualsiasi delle tabelle.
  • TableType: obbligatorio. La tabella specifica per cui deve essere eseguito il cast il record.

IsType( RecordReference, TableType )

  • RecordReference: obbligatorio. Un riferimento di record, spesso un campo di ricerca che può fare riferimento a un record in una qualsiasi delle tabelle.
  • TableType: obbligatorio. La tabella specifica per la quale eseguire il test.

Esempio

Informazioni su riferimenti di record e ricerche polimorfiche contiene esempi esaurienti.

  1. Creare un'app canvas vuota per tablet.

  2. Nel riquadro a sinistra seleziona Dati>Aggiungi dati. E poi, aggiungi le tabelle Account e Contatti.

    App vuota con due origini dati: Account e Contatti.

  3. Nel riquadro di sinistra, seleziona + (Inserisci) >Layout>Raccolta verticale vuota.

    Inserire un controllo gallery con un layout Vuota verticale.

  4. Seleziona Connettersi ai dati, quindi seleziona Contatti come origine dati.

  5. Impostare il layout della raccolta su Titolo e sottotitolo.

    Aprire il selettore di layout del riquadro delle proprietà.

    Impostare il layout su Titolo e sottotitolo.

  6. Nel riquadro Dati, aprire l'elenco Title1, quindi selezionare Nome completo.

    Impostare il valore del titolo.

  7. Selezionare il controllo label Subtitle1.

    Impostare il valore del sottotitolo.

  8. Impostare la proprietà Text di Subtitle1 su questa formula:

    If( IsBlank( ThisItem.'Company Name' ), "--",
        IsType( ThisItem.'Company Name', Accounts ),
            "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
        "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
    )
    

    La schermata ora è completa e mostra account e contatti mescolati nella raccolta.

    Il sottotitolo nella raccolta mostra questi valori:

    • "--" se 'Nome società' è blank.
    • "Account: " e poi il campo Nome account della tabella Account se il campo Nome società si riferisce a un account.
    • "Contatto: " e poi il campo Nome completo della tabella Contatti se il campo Nome società si riferisce a un contatto.

    I risultati potrebbero differire da quelli in questo argomento poiché utilizza dati di esempio che sono stati modificati per mostrare altri tipi di risultati.