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.
Cree unha aplicación de lenzo en branco para tabletas.
No panel esquerdo, seleccione Datos>Engadir datos. Despois, engada as táboas Contas e Contactos.
No panel esquerdo, seleccione + (Inserir) >Deseño>Galería vertical en branco.
Seleccione Conectarse con datos e, a continuación, seleccione Contactos como a orixe de datos.
Estableza o deseño da galería en Título e subtítulo.
No panel Datos, abra a lista Título1 e seleccione Nome completo.
Seleccione o control da etiqueta Subtítulo1.
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' )
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.