Funzioni AsType e IsType in app canvas

Verifica un riferimento di record per un tipo di entità specifico (IsType) e tratta il riferimento come tipo specifico (AsType).

Descrizione

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 ai record in una determinata entità. Poiché il tipo di entità è ben definito, è possibile accedere ai campi della ricerca utilizzando una semplice annotazione con punto. Ad esempio, First( Accounts ).'Primary Contact'.'Full Name' passa dall'entità Account al record Contatto primario nell'entità Contatti ed estrae il campo Nome completo.

Common Data Service supporta anche campi di ricerca polimorfici, che possono fare riferimento a record di un insieme di entità, come in questi esempi.

Campo di tipo lookup 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 di record può fare riferimento a entità diverse, non è possibile sapere quali campi saranno disponibili quando si scrive una formula. La notazione Record.Field non è disponibile. Tali formule devono adattarsi ai record rilevati dall'app durante l'esecuzione.

La funzione IsType controlla se un riferimento di record fa riferimento a un tipo di entità specifico. La funzione restituisce un valore booleano TRUE o FALSE.

La funzione AsType considera un riferimento di record come un tipo di entità specifico, a volte denominato cast. Puoi utilizzare il risultato come se fosse un record dell'entità e utilizzare nuovamente la notazione Record.Field per accedere a tutti i campi di quel record. Un errore si verifica se il riferimento non è del tipo specifico.

Utilizzare queste funzioni insieme per dapprima testare il tipo di entità di un record e quindi gestirlo come record di quel tipo di 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 utilizzati in un contesto di record, ad esempio in un controllo Raccolta o Modifica modulo, potrebbe essere necessario utilizzare l'operatore di risoluzione ambiguità per fare riferimento al tipo di entità. 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, si specifica il tipo tramite il nome dell'origine dati connessa all'entità. 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 l'entità Utenti come origine dati se si desidera utilizzare IsType e AsType con un campo di ricerca Proprietario e record di quell'entità. È possibile aggiungere solo le origini dati effettivamente utilizzate nell'app; non è necessario aggiungere tutte le entità a cui una ricerca potrebbe fare riferimento.

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, EntityType )

  • RecordReference: obbligatorio. Un riferimento di record, spesso un campo di ricerca che può fare riferimento a un record in una qualsiasi di molteplici entità.
  • EntityType: obbligatorio. L'entità specifica per la quale eseguire test.

IsType( RecordReference, EntityType )

  • RecordReference: obbligatorio. Un riferimento di record, spesso un campo di ricerca che può fare riferimento a un record in una qualsiasi di molteplici entità.
  • EntityType: obbligatorio. L'entità specifica per cui si deve eseguire il cast del record.

Esempio

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

  1. Creare un'app canvas vuota per tablet.

  2. Nella scheda Visualizza, selezionare Origini dati e quindi aggiungere le entità Contatti e Account come origini dati.

    App vuota con due origini dati: Account e Contatti

  3. Inserire un controllo Raccolta con un orientamento Vuota verticale.

    Inserire un controllo Raccolta con un layout Vuota verticale.

  4. Nella scheda Proprietà vicino al lato destro della schermata, impostare la proprietà Itemps della raccolta su Contatti.

    Impostare Items su Contatti nel riquadro delle proprietà

  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 etichetta 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 quindi il campo Nome account dell'entità Account se il campo Nome società fa riferimento a un account.
    • "Contatto: " e quindi il campo Nome completo dell'entità Contatti se il campo Nome società fa riferimento 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.