Compartir a través de


AsTypefunciones y IsType

Función Se aplica a
AsType Aplicaciones de lienzo Copilot Studio Aplicaciones controladas por modelos de Power Platform Funciones de Power Platform Dataverse Power Pages
IsType Aplicaciones de lienzo Copilot Studio Aplicaciones controladas por modelos Dataverse Functions Power Pages

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

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:

  1. 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.
  2. 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.
  3. 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 .
  4. 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.

  1. Cree una aplicación de lienzo en blanco para tabletas.

  2. En el panel izquierdo, seleccione Data>Add data (Agregar datos) y, a continuación, agregue las tablas Accounts and Contacts (Cuentas y contactos ).

    Aplicación en blanco con dos fuentes de datos: cuentas y contactos.

  3. En el panel izquierdo, seleccione + (Insertar) >Diseño>Galería vertical en blanco.

    Insertar un control de galería con un diseño vertical en blanco.

  4. Seleccione Conectarse a los datos y luego seleccione Contactos como el origen de datos.

  5. Establezca el diseño de la galería en Título y subtítulo.

    Abra el selector de diseño desde el panel de propiedades.

    Establezca el diseño en Título y subtítulo.

  6. En el panel Datos abra la lista Title1 y seleccione Nombre completo.

    Establezca el valor del título.

  7. Selecciona la etiqueta de control Subtitle1.

    Establezca el valor del subtítulo.

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

    La pantalla ahora está completa y muestra cuentas y contactos entremezclados en la galería.

    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