Compartir a través de


Funciones AsType e IsType

Se aplica a: Aplicaciones de lienzo Aplicaciones basadas en modelo Power Platform CLI

Comprueba una referencia de registro para un tipo de tabla específico (IsType) y trata la referencia como un tipo específico (AsType).

Nota

Los comandos PAC CLI pac power-fx no admiten IsType.

Description

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. Debido a que una referencia de registro puede hacer referencia a diferentes tablas, no sabe qué campos estarán disponibles cuando escriba una fórmula. La notación Registro.Campo no está disponible. Esas fórmulas deben adaptarse a los registros que encuentra la aplicación cuando se ejecuta.

La función IsType prueba si una referencia de registro se refiere a un tipo de tabla específico. La función devuelve un valor booleano TRUE o FALSE.

La función AsType trata una referencia de registro como un tipo de tabla específico, a veces denominado fundición. Puede utilizar el resultado como si fuera un registro de la tabla y volver a utilizar la notación Record.Field para acceder a todos los campos de ese registro. Se produce un error si la referencia no es del tipo específico.

Utilice estas funciones juntas para probar primero el tipo de tabla de un registro y luego trátelo 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'
)

Necesita estas funciones solo si está accediendo a los campos de una referencia de registro. Por ejemplo, puede usar 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 ) } )

Si se utiliza en un contexto de registro, como dentro de un control Gallery o Edit form, es posible que deba utilizar el operador de desambiguación global para hacer referencia al tipo de tabla. Por ejemplo, esta fórmula sería efectiva para una galería que muestra una lista de contactos donde Nombre de empresa es una búsqueda de Cliente:

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Para ambas funciones, especifica el tipo a través del nombre del origen de datos que está conectado a la tabla. Para que la fórmula funcione, también debe agregar un origen de datos a la aplicación para cualquier tipo que desee probar o emitir. Por ejemplo, debe agregar la tabla Usuarios como origen de datos si quiere usar IsType y AsType con una búsqueda Propietario y registros de esa tabla. Puede agregar solo las fuentes de datos que realmente usa en su aplicación; no es necesario agregar todas las tablas a las que podría hacer referencia una búsqueda.

Si la referencia de registro es blank, IsType devuelve FALSE y AsType devuelve blank. Todos los campos de un registro blank serán blank.

Sintaxis

AsType( 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. La tabla específica a la que se debe enviar el registro.

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. La tabla específica para la que probar.

Ejemplo

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 Datos>Agregar datos. Y luego, agregue las tablas 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 a 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 luego el campo Nombre de la cuenta de la tabla Cuentas si el campo Nombre de empresa se refiere a una cuenta.
    • "Contacto:" y luego el campo Nombre completo de la tabla Contactos si el campo Nombre de empresa se refiere a un contacto.

    Sus resultados pueden diferir de los de este tema porque utiliza datos de muestra que se modificaron para mostrar tipos de resultados adicionales.