Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Función | Se aplica a |
|---|---|
| AsType |
|
| IsType |
|
Comprueba si una referencia de registro es un tipo de tabla específico (IsType) y trata la referencia como ese tipo (AsType).
Nota
Los comandos pac power-fx de la CLI pac no admiten IsType.
Description
Las AsType funciones y IsType se pueden usar para convertir referencias de registros (por ejemplo, búsquedas polimórficas en Dataverse) y valores dinámicos a valores con tipo que se pueden usar directamente.
Referencias de registro
Lea Comprender referencias de registros y búsquedas polimórficas para una introducción más amplia y más detalles.
Un campo de búsqueda generalmente se refiere a registros en una tabla en particular. Debido a que el tipo de tabla está bien establecido, puede acceder a los campos de la búsqueda utilizando una simple notación de puntos. Por ejemplo, First( Accounts ).'Primary Contact'.'Full Name' va desde la tabla Cuentas hasta el registro Contacto primario en la tabla Contactos y extrae el campo Nombre completo.
Microsoft Dataverse también admite campos de búsqueda polimórficos, que pueden hacer referencia a registros de un conjunto de tablas, como en estos ejemplos.
| Campo de búsqueda | Puede referirse a |
|---|---|
| Propietario | Usuarios o Equipos |
| Cliente | Cuentas o Contactos |
| Referente a | Cuentas, Contactos, Artículos de conocimiento, etc. |
En las fórmulas de aplicación de lienzo use referencias de registros para trabajar con búsquedas polimórficas. Dado que una referencia de registro puede hacer referencia a tablas diferentes, no puede saber qué campos están disponibles en tiempo de ejecución al escribir una fórmula. La notación Registro.Campo no está disponible. Estas fórmulas deben adaptarse a los registros que encuentra la aplicación cuando se ejecuta.
La IsType función comprueba si una referencia de registro hace referencia a un tipo de tabla específico. La función devuelve un valor booleano TRUE o FALSE.
La AsType función trata una referencia de registro como un tipo de tabla específico, también denominado conversión. El resultado se usa como si fuera un registro de la tabla y use la notación Record.Field para tener acceso a todos los campos de ese registro. Si la referencia no es del tipo específico, se produce un error.
Use estas funciones juntas para comprobar primero el tipo de tabla de un registro y, a continuación, tratarla como un registro de ese tipo para que los campos estén disponibles:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Solo necesita estas funciones si accede a los campos de una referencia de registro. Por ejemplo, se usan referencias de registro en la función Filter sin IsType o AsType:
Filter( Accounts, Owner = First( Users ) )
Del mismo modo, puede utilizar referencias de registro con la función Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Al usar estas funciones en un contexto de registro, como dentro de un control Galería o Editar formulario , es posible que necesite el operador de desambiguación global para hacer referencia al tipo de tabla. Por ejemplo, esta fórmula funciona para una galería que muestra una lista de contactos donde Nombre de empresa es una búsqueda de clientes :
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Para ambas funciones, especifique el tipo mediante el nombre del origen de datos conectado a la tabla. Para que la fórmula funcione, agregue un origen de datos a la aplicación para cualquier tipo que quiera comprobar o convertir. Por ejemplo, agregue la tabla Users como origen de datos si desea usar IsType y con una búsqueda de AsTypepropietario y registros de esa tabla. Agregue solo los orígenes de datos que use en la aplicación; No es necesario agregar todas las tablas a las que podría hacer referencia una búsqueda.
Si la referencia de registro está en blanco, IsType devuelve FALSE y AsType devuelve en blanco. Todos los campos de un registro blank también serán blank.
Valores dinámicos
Importante
- El uso AsType y IsType con valores dinámicos es una característica experimental.
- Es posible que las características experimentales no estén pensadas para su uso en producción y que no estén completas. Estas características están disponibles antes del lanzamiento oficial para que pueda tener acceso anticipado y proporcionar comentarios. Más información: Comprender las funciones experimentales, de vista previa y retiradas en aplicaciones de lienzo
- El comportamiento que se describe en este artículo solo está disponible cuando la característica experimental Tipos definidos por el usuario en Configuración > Próximas características > Experimental está activada está activada (desactivada de forma predeterminada).
- Sus comentarios son muy valiosos para nosotros. Nos gustaría conocer su opinión en los foros de la comunidad de características experimentales de Power Apps.
Es necesario convertir un valor dinámico de una API web o la función [ParseJSON ] en un valor con tipo específico para poder usarlo en Power Fx. Estas son algunas opciones:
- Escriba implícitamente el campo en el punto que lo use. Por ejemplo, un objeto se convierte en un número si lo usa con el
+operador , si se puede convertir en un número. Esta opción puede provocar conversiones inesperadas y no puede convertir registros y tablas en su conjunto. - Escriba explícitamente cada campo individualmente con las funciones Decimal, Text, DateTime, GUID y otras constructoras de tipos. Esta opción es la más invasiva para las fórmulas, ya que debe hacer cada campo por separado.
- Escriba explícitamente JSON con el segundo argumento de la función ParseJSON. Esta opción es fácil y evita necesitar el valor dinámico .
- Escriba explícitamente un valor dinámico mediante la AsType función . También puede comprobar el tipo antes de probar la conversión con la IsType función .
Sintaxis
AsType( RecordReference, TableType )
- RecordReference: obligatorio. Una referencia de registro, a menudo un campo de búsqueda que hace referencia a un registro en cualquiera de varias tablas.
- TableType - Necesario. Tabla específica a la que se va a convertir el registro.
AsType( DynamicValue, TypeSpecification )
- DynamicValue : obligatorio. Valor dinámico de la función ParseJSON o llamada API.
- TypeSpecification: obligatorio. Una especificación de tipo o nombre de tipo que defina con la función Type.
IsType( RecordReference, TableType )
- RecordReference: obligatorio. Una referencia de registro, a menudo un campo de búsqueda que puede hacer referencia a un registro en cualquiera de las múltiples tablas.
- TableType - Necesario. Tabla específica para la que se va a probar.
IsType( DynamicValue, TypeSpecification )
- DynamicValue : obligatorio. Valor dinámico de la función ParseJSON o una llamada API.
- TypeSpecification: obligatorio. Un nombre de tipo o una especificación de tipo definida con la función Type.
Ejemplos
Referencias de registro
Comprender referencias de registros y búsquedas polimórficas contiene extensos ejemplos.
Cree una aplicación de lienzo en blanco para tabletas.
En el panel izquierdo, seleccione Data>Add data (Agregar datos) y, a continuación, agregue las tablas Accounts and Contacts (Cuentas y contactos ).
En el panel izquierdo, seleccione + (Insertar) >Diseño>Galería vertical en blanco.
Seleccione Conectarse a los datos y luego seleccione Contactos como el origen de datos.
Establezca el diseño de la galería en Título y subtítulo.
En el panel Datos abra la lista Title1 y seleccione Nombre completo.
Selecciona la etiqueta de control Subtitle1.
Establezca la propiedad Text de Subtitle1 a esta 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' )
El subtítulo en la galería muestra estos valores:
- "--" Si el 'Nombre de empresa' es blank.
- "Cuenta: " y el campo Nombre de cuenta de la tabla Cuentas si el campo Nombre de la compañía hace referencia a una cuenta.
- "Contacto: " y el campo Nombre completo de la tabla Contactos si el campo Nombre de la compañía hace referencia a un contacto.
Los resultados pueden diferir porque los datos de ejemplo se pueden modificar para mostrar más tipos de resultados.
Valores dinámicos
En los ejemplos siguientes se muestra un registro JSON simple interpretado de varias maneras por ParseJSON, AsTypey IsType en la CLI de Pac Power Fx REPL.
En este primer ejemplo, no se proporciona información de tipo a ParseJSON, por lo que devuelve un valor dinámico.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>
El campo se convierte implícitamente en un número cuando se utiliza en un contexto numérico.
>> 1 + rec.a
2
Como alternativa, este ejemplo convierte explícitamente el registro en un registro Power Fx tipificado con el segundo argumento a ParseJSON.
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
Y otra alternativa, este ejemplo convierte explícitamente el registro en un registro Power Fx con tipo mediante AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Por último, si no está seguro, en este ejemplo se prueba el tipo antes de convertirlo con la IsType función .
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true