Compartir por


As funcións 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

Os comandos PAC CLI pac power-fx non admiten 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
Respecto 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 rexistro e as buscas polimórficas contén exemplos extensos.

  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 deseño desde o panel de propiedades.

    Establece 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.

    Establece o valor dos subtítulos.

  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 e mostra 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.