Compartir por


Funcións de ASTYPE e ISTYPE

Aplícase a: Aplicacións de lenzo Aplicacións baseadas en modelos Power Pages Power Platform CLI

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

Nota

PAC CLI PAC Power-FX Comandos Non admite istype.

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 normalmente refírese a rexistros nunha táboa particular. Debido a que o tipo de táboa está ben establecido, pode acceder aos campos da busca mediante unha notación de puntos simple. Por exemplo, First( Accounts ).'Primary Contact'.'Full Name' vai desde a táboa Contas ao rexistro Contacto principal na táboa Contactos e extrae o campo Nome completo.

Microsoft Dataverse tamén admite campos de busca polimórfica, que poden referirse a rexistros dun conxunto de táboas, 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. Como unha referencia de rexistro pode referirse a diferentes táboas, non sabe que campos estarán dispoñibles cando escribe 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 fai referencia a un tipo de táboa específico. A función devolve un Booleano TRUE ou FALSE.

A función AsType trata unha referencia de rexistro como un tipo de táboa específico, ás veces coñecese como conversión. Pode usar o resultado coma se fose un rexistro da táboa e usar de novo 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 xuntas para probar primeiro o tipo de táboa dun rexistro e despois 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 Filter sen IsType ou AsType:

Filter( Accounts, Owner = First( Users ) )

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

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

Se se usa nun contexto de rexistro, como dentro dun control de Galería ou Editar formulario, pode que teña que empregar o operador de desambiguación global para facer referencia ao tipo de táboa. 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 que está conectada á táboa. 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, debe engadir a táboa Usuarios como orixe de datos se quere usar IsType e AsType cunha busca de Propietario e rexistros desa táboa. Só pode engadir as orixes de datos que realmente usa na súa aplicación; non precisa engadir todas as táboas ás que podería facer referencia unha busca.

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

  • RecordReference - Obrigatorio. Unha referencia de rexistro, normalmente un campo de busca que pode referirse a un rexistro en calquera das diferentes táboas.
  • TableType - Obrigatorio. A táboa específica á que se debe converter o rexistro.

IsType( RecordReference, TableType )

  • RecordReference - Obrigatorio. Unha referencia de rexistro, normalmente un campo de busca que pode referirse a un rexistro en calquera das diferentes táboas.
  • TableType - Obrigatorio. A táboa específica para a que probar.

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 panel esquerdo, seleccione Datos>Engadir datos. Despois, engada as táboas Contas e Contactos.

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

  3. No panel esquerdo, seleccione + (Inserir) >Deseño>Galería vertical en branco.

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

  4. Seleccione Conectarse con datos e, a continuación, seleccione Contactos como a orixe de datos.

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

    Abre o selector de disposición do panel de propiedades.

    Estableza a disposición do título e do 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.

    Estableza 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.
    • "Account: " e despois o campo Nome da conta da táboa Contas se o campo Nome da empresa se refire a unha conta.
    • "Contact: " e despois o campo Nome completo da táboa Contactos se o campo Nome da empresa se refire 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.