AsType 和 IsType 函数

适用于:画布应用模型驱动应用 Power Platform CLI

检查特定表类型 (IsType) 的记录引用,将引用视为特定类型 (AsType)。

备注

PAC CLI pac power-fx 命令不支持 IsType

Description

阅读了解记录引用和多态查找,了解更广泛的介绍和更多详细信息。

查找字段通常指特定表中的记录。 由于表类型已经正确建立,因此您可以使用简单的点符号访问查找的字段。 例如,First( Accounts ).'Primary Contact'.'Full Name'客户表到达联系人表中的主要联系人记录,提取全名字段。

Microsoft Dataverse 还支持多态查找字段,它可以引用一组表中的记录,如这些示例中所示。

查找字段 可以引用
所有者 用户团队
客户 客户联系人
关于 客户联系人知识文章等。

在区域应用公式中,使用记录引用处理多态查找。 因为记录引用可以引用不同的表,所以在编写公式时您不知道哪些字段可用。 不能使用 Record.Field 表示法。 这些公式必须适应应用运行时遇到的记录。

IsType 函数测试记录引用是否引用特定的表类型。 函数返回布尔值 TRUE 或 FALSE。

AsType 函数将记录引用视为特定的表类型,有时称为转换。 使用结果时您可以将它当作表的记录那样使用,然后再次使用 Record.Field 表示法访问该记录的所有字段。 如果引用不是特定类型,将发生错误。

首选将这些函数一起用来测试记录的表类型,然后将其视为该类型的记录,让字段可用:

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

仅在访问记录引用的字段时才需要这些函数。 例如,您可以在 Filter 函数中使用记录引用,而不使用 IsTypeAsType

Filter( Accounts, Owner = First( Users ) )

同样,可以将记录引用与 Patch 函数一起使用:

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

如果在记录上下文中使用,如在 GalleryEdit form 控件内,您可能需要使用全局消除歧义运算符引用表类型。 例如,此公式对显示公司名称客户查找的联系人列表的库有效:

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

对于这两个函数,您将通过连接到表的数据源的名称来指定类型。 为了使公式正常工作,您还必须将要测试或转换的任何类型的数据源添加到应用。 例如,如果您想要将 IsTypeAsType负责人查找和该表中的记录一起使用,则必须添加用户表作为数据源。 您只能添加您在应用中实际使用的数据源;您不需要添加查找可以引用的所有表。

如果记录引用为空白IsType 将返回 FALSE,AsType 将返回空白空白记录的所有字段都将为空白

语法

AsType( RecordReference, TableType )

  • RecordReference - 必需。 一个记录引用,通常是一个查找字段,可以引用多个表中任何一个表的记录。
  • TableType - 必需。 记录应该转换到的特定表。

IsType( RecordReference, TableType )

  • RecordReference - 必需。 一个记录引用,通常是一个查找字段,可以引用多个表中任何一个表的记录。
  • TableType - 必需。 要针对其进行测试的特定表。

示例

了解记录引用和多态查找中包含大量示例。

  1. 创建适用于平板电脑的空白画布应用。

  2. 在左侧窗格上,选择数据>添加数据。 然后,添加客户联系人表。

    具有客户和联系人两个数据源的空白应用。

  3. 在左窗格上,选择 +(插入)>布局>空白垂直库

    插入具有空白垂直布局的 Gallery 控件。

  4. 选择连接到数据,然后选择联系人作为数据源。

  5. 将库的布局设置为标题和副标题

    从属性窗格打开布局选取器。

    将布局设置为“标题和副标题”。

  6. 数据窗格中,打开 Title1 列表,然后选择命名

    设置标题值。

  7. 选择 Subtitle1 Label 控件。

    设置副标题值。

  8. Subtitle1Text 属性设置为以下公式:

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

    屏幕现已完成,显示在库中混合的客户和联系人。

    库中的副标题显示以下值:

    • 如果 'Company Name'空白,则为 "--"。
    • 如果公司名称字段表示的是一个客户,则为“客户:”,然后是客户表中的客户名称字段。
    • 如果公司名称字段表示的是一个联系人,则为“联系人:”,然后是联系人表中的全名字段。

    您的结果可能与本主题中的结果有所不同,因为它使用经过修改的示例数据来显示其他结果类型。