Funcións AsType e IsType de aplicacións de lenzo

Comproba unha referencia de rexistro para un tipo de entidade específico (IsType) e trata a referencia como un tipo específico (AsType).

Descripción

Lea Comprender as referencias de rexistros e as buscas polimórficas para obter unha introdución máis ampla e máis detalles.

Un campo de busca adoita facer referencia a rexistros dunha determinada entidade. Debido a que o tipo de entidade está ben establecido, pode acceder aos campos da busca empregando unha simple notación de puntos. Por exemplo, First( Accounts ).'Primary Contact'.'Full Name' vai desde a entidade Contas ao rexistro Contacto principal da entidade Contactos e extrae o campo Nome completo.

Common Data Service tamén admite campos de busca polimórficos, que poden referirse a rexistros dun conxunto de entidades, como nestes exemplos.

Campo de busca Pode facer referencia a
Propietario Usuarios ou Equipos
Cliente Contas ou Contactos
Referente a Contas, Contactos, Artigos de coñecemento, etc.

En fórmulas de aplicacións de lenzo, use referencias de rexistros para traballar con buscas polimórficas. Debido a que unha referencia de rexistro pode facer referencia a distintas entidades, non sabe que campos estarán dispoñibles cando escriba unha fórmula. A notación Record.Field non está dispoñible. Esas fórmulas deben adaptarse aos rexistros cos que se atopa a aplicación cando se executa.

A función IsType proba se unha referencia de rexistro se refire a un tipo de entidade específico. A función devolve un Booleano TRUE ou FALSE.

A función AsType trata unha referencia de rexistro como un tipo de entidade específico, ás veces denominado conversión. Pode usar o resultado coma se fose un rexistro da entidade e volver usar a notación Record.Field para acceder a todos os campos dese rexistro. Prodúcese un erro se a referencia non é do tipo específico.

Use estas funcións para probar primeiro o tipo de entidade dun rexistro e tratalo como un rexistro dese tipo para que os campos estean dispoñibles:

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

Só precisa destas funcións se está a acceder aos campos dunha referencia de rexistro. Por exemplo, pode usar referencias de rexistros na función Filtro sen IsType ou AsType:

Filter( Accounts, Owner = First( Users ) )

Do mesmo xeito, pode usar referencias de rexistro coa función Parche:

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

Se se usa nun contexto de rexistro, como por exemplo dentro dun control de Galería ou de Formulario de edición, pode que necesite usar o operador global de desambiguación para facer referencia ao tipo de entidade. Por exemplo, esta fórmula sería eficaz para unha galería que amosa unha lista de contactos onde Nome da compañía é unha busca de Cliente:

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

Para ambas funcións, especifique o tipo a través do nome da orixe de datos conectado á entidade. Para que a fórmula funcione, tamén debe engadir unha orixe de datos á aplicación para calquera tipo que desexe probar ou emitir. Por exemplo, ten que engadir a entidade Usuarios como orixe de datos se desexa empregar IsType e AsType cunha busca de Propietario e rexistros desa entidade. Só pode engadir as orixes de datos que realmente utiliza na súa aplicación; non é preciso engadir todas as entidades ás que unha busca podería facer referencia.

Se a referencia do rexistro está en branco, IsType devolverá FALSO e AsType devolverá en branco. Todos os campos dun rexistro en branco aparecerán en branco.

Sintaxe

AsType( RecordReference, EntityType )

  • RecordReference - Obrigatorio. Unha referencia de rexistro, con frecuencia un campo de busca que pode facer referencia a un rexistro en calquera das múltiples entidades.
  • EntityType - Obrigatorio. A entidade específica para a que realizar a proba.

IsType( RecordReference, EntityType )

  • RecordReference - Obrigatorio. Unha referencia de rexistro, con frecuencia un campo de busca que pode facer referencia a un rexistro en calquera das múltiples entidades.
  • EntityType - Obrigatorio. A entidade específica á que se debería lanzar o rexistro.

Exemplo

Comprender as referencias de rexistros e as buscas polimórficas contén exemplos amplos.

  1. Cree unha aplicación de lenzo en branco para tabletas.

  2. No separador Ver, seleccione Orixes de datos e logo engada as entidades Contactos e Contas como orixes de datos.

    Aplicación en branco con dúas orixes de datos: contas e contactos

  3. Insira un control Galería cunha orientación Vertical en branco.

    Insira un control de galería cun deseño vertical en branco

  4. No separador Propiedades, preto do lado dereito da pantalla, estableza a propiedade Elementos da galería en Contactos.

    Establecer elementos en Contactos no panel de propiedades

  5. Estableza o deseño da galería en Título e subtítulo.

    Abra o selector de deseños desde o panel de propiedades

    Establecer o deseño en Título e subtítulo

  6. No panel Datos, abra a lista Título1 e seleccione Nome completo.

    Establecer o valor do título

  7. Seleccione o control da etiqueta Subtítulo1.

    Establecer o valor do subtítulo

  8. Axuste a propiedade de Text de Subtitle1 nesta fórmula:

    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'
    )
    

    A pantalla xa está completa mostrando contas e contactos mesturados na galería

    O subtítulo da galería amosa estes valores:

    • "--" se o 'Nome da empresa' está en branco.
    • "Conta:" e despois o campo Nome da conta da entidade Contas se o campo Nome da compañía fai referencia a unha conta.
    • "Contacto:" e despois o campo Nome completo da entidade Contactos se o campo Nome da compañía fai referencia a un contacto.

    Os seus resultados poden diferir dos que hai neste tema porque usa datos de exemplo que foron modificados para amosar tipos adicionais de resultados.