计算和汇总属性

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

使用计算汇总属性,用户无需手动执行计算,从而可以专注于他们的工作。 系统管理员现在可以轻松定义字段来包含许多常见计算值,而无需通过开发人员的操作。 开发人员还可以利用平台功能执行这些计算,而不是在其代码中进行计算。

视频:Microsoft Dynamics CRM 2015 中的汇总和计算字段

在本主题中

常见元素和属性

计算属性

汇总属性

SourceTypeMasks 枚举

常见元素和属性

计算和汇总属性共享某些常见元素和特性,例如:

  • 它们是只读的。

  • 它们不是特定于用户的。 使用系统用户帐户来执行计算,因此,用户并没有有权查看基于记录的值,比如启用的字段级安全性的属性。

AttributeMetadata 继承的所有属性都具有可以包含下表所示值的 SourceType 属性。

说明

null

不是计算或汇总属性的有效属性类型。

0

简单属性。 属性不定义为计算或汇总属性。

1

计算属性

2

汇总属性

计算和汇总属性基于从 AttributeMetadata 继承的现有属性类型。 以下属性类型有新属性:

每类属性具有以下支持计算和汇总的属性。

属性

定义

FormulaDefinition

包含 XAML 定义的公式用于执行计算或汇总。 仅可以通过应用程序公式编辑器更改此值。

有关配置这些属性的公式的信息,请参阅自定义指南中的以下主题:定义汇总字段定义计算字段

SourceTypeMask

只读属性的位掩码值介绍计算属性的公式的源类型或计算的或汇总属性的公式无效。

  • 0:未定义。 简单和汇总属性的默认值。

  • 1:简单。 计算属性引用相同记录的属性。

  • 2:相关。 计算属性引用相关记录的属性。

  • 4:Logical。 计算属性引用实际存储在不同数据表中相同记录的属性。详细信息:逻辑属性

  • 8:Calculated。 计算的属性引用另一计算属性。

  • 16:Rollup。 计算属性引用一个汇总属性。

  • 32:Invalid。 计算或汇总字段无效。

    它通常位于字段引用不存在属性的位置。

备注

对于任何计算或汇总属性,一个或多个条件可能为 true。 由于这是位掩码值,在执行按位操作时,您可能会发现使用 SourceTypeMasks 枚举 更有用。

计算属性

在检索时,实时计算计算属性。 可以使用不同数据类型组成计算属性。 例如,整数计算属性可以引用十进制或货币属性的值。详细信息:TechNet:定义计算字段

计算属性值在检索插件管道中可用。 实体记录更新或创建的后期图像包含阶段 40 中的计算属性值。详细信息:事件执行管道

限制

您无法使用引用相关实体的计算属性或其他计算属性中的值,或相同实体中的逻辑值来对查询返回的值进行分类。 虽然您的查询可以指定使用计算属性对结果排序,但是分类方向将被忽略并不会引发错误。 如果在同一记录中计算属性仅引用简单值,则分类正常运行。 您可以确定属性元数据上使用 SourceTypeMask 属性计算字段中所使用的资源。详细信息:逻辑属性

只有即时父实体的属性可以用于计算属性。

保存的查询、图表和可视化项最多可以有 10 个唯一的计算属性。

计算属性可引用所在公式的其他计算属性,但不能引用自己。

当用户 Microsoft Dynamics 365 for Outlook 脱机时,计算属性没有值。

MaxValueMinValue 元数据特性在计算属性上不能设置。

汇总属性

因为汇总属性存在于数据库,所以可以像常规属性一样用于筛选或分类。 所有流程或插件将使用属性的最新计算值。 汇总属性值由计划的系统作业异步计算。 管理员设置何时运行或暂停作业。 默认情况下,每个属性每小时更新一次。详细信息:TechNet:定义汇总字段

在汇总属性被创建或更新时,“质量计算汇总字段”时,作业计划在 12 小时内运行。 在不影响用户的时间里,12 小时延迟用于执行资源密集型操作。 在作业完成后,下次运行将是十年后。 如果计算有问题,将会和系统作业一起报告。 在“设置”>“系统作业”中找到系统作业,以查找汇总字段的任何错误。

提示

作为开发环境测中测试解决方案的开发人员,您可能不希望等待 12 小时。 您可以加快。 在“系统作业”列表中,使用“定期系统作业”视图筛选列表并找到“质量计算汇总字段”作业。 选定作业后,使用“其他操作”>“推迟”并设置稍后发生的时间。

如果要以编程方式触发增加新的“质量计算汇总字段”作业,请使用 RetrieveAttributeRequest 检索汇总属性的 AttributeMetadata,并使用 UpdateAttributeRequest 更新属性而不进行任何真实的更改。

当导入包含汇总属性的解决方案时,“质量计算汇总字段”作业将立即出现。 假定在您安装解决方案期间,不会对用户造成不利影响。

实体的每个汇总属性也包括汇总属性的 2 个支持属性:

  • <attribute SchemaName>_Date:日期时间– – 汇总最后计算。

  • <attribute SchemaName>_State:整数 – 汇总计算的状态。详细信息:汇总状态值

汇总状态值

在对应的 <attribute SchemaName>_State 属性和 CalculateRollupFieldResponse.FieldState 属性中,汇总字段计算的状态是可用的。 指示状态的值如下表所示。

状态值

说明

0

NotCalculated:尚未计算属性值。

1

Calculated:已根据 <attribute SchemaName>_Date 中上次的更新时间计算属性值。

2

OverflowError:属性值计算导致溢出错误。

3

OtherError:因为内部错误,属性值计算失败,下次运行计算作业可修复。

4

RetryLimitExceeded:属性值计算失败,由于并行的最大数量与锁定冲突,导致超出了计算的最大重试次数。

5

HierarchicalRecursionLimitReached:属性值计算失败,因为达到了计算限制的最大层次结构深度。

6

LoopDetected:属性值计算失败,因为在记录的层次结构中检测到了递归循环。

立即检索计算的汇总字段值

汇总属性支持 CalculateRollupField 消息,开发人员可以使用该消息计算所需汇总属性值。 请求和响应以及成员,如下表所示。

请求/响应

成员

CalculateRollupFieldRequest

Target:记录的 EntityReference

FieldName:表示属性逻辑名称的字符串。

CalculateRollupFieldResponse

EntityEntity 包含汇总属性并支持 <attribute SchemaName>_Date<attribute SchemaName>_State 属性。

此消息是请求中确定属性的同步操作。 如果该记录的值列入为其他汇总字段的部分,那么这些字段的值不会考虑由调用此方法导致的可能的值变化,直到执行这些计算的定期计划异步作业出现。

限制

汇总属性不能作为工作流事件或等待条件使用。 这些属性不会提高事件以触发工作流。

当汇总属性更新时,实体的 ModifiedBy 和 ModifiedOn 属性不会被更新。

在一个组织内最多可以定义 100 个汇总属性。 每个实体拥有最多不能超过 10 个汇总属性。

汇总属性公式不能引用另一个汇总属性。

汇总属性公式不能引用复杂计算属性。 只有在同一记录中引用简单属性的计算属性才能用于汇总。

汇总属性不能包括多对多 (N:N) 关系的记录。 它只能包含一对多 (1: N) 关系中的记录。

汇总属性公式不能将一对多 (1:N) 关系和 ActivityPointerActivityParty 实体一起使用。

SourceTypeMasks 枚举

支持计算和汇总字段的属性的 SourceTypeMask 属性包含一个位掩码值。 若要从值中提取相关信息,在执行按位操作时,这有助于枚举。 当比较 SourceTypeMask 属性值时,请使用以下 SourceTypeMasks 枚举。

 public enum SourceTypeMasks
{
    /// <summary>
    /// Undefined: 0 - The default value for simple and rollup attributes.
    /// </summary>
    Undefined = 0,
    /// <summary>
    /// Simple: 1 - The calculated attribute refers to an attribute in the same record.
    /// </summary>
    Simple = 1,
    /// <summary>
    /// Related: 2 - The calculated attribute refers to an attribute in a related record.
    /// </summary>
    Related = 2,
    /// <summary>
    /// Logical: 4 - The calculated attribute refers to a logical attribute.
    /// </summary>
    Logical = 4,
    /// <summary>
    /// Calculated: 8 - The calculated attribute refers to another calculated attribute.
    /// </summary>
    Calculated = 8,
    /// <summary>
    /// Rollup: 16 - The calculated attribute refers a rollup attribute. 
    /// </summary>
    Rollup = 16,
    /// <summary>
    /// Invalid: 32 - The calculated or rollup attribute is invalid.
    /// Typically this would be where a field refers to an attribute that no longer exists. 
    /// </summary>
    Invalid = 32
}

另请参阅

视频:Microsoft Dynamics CRM 2015 中的汇总和计算字段
Microsoft Dynamics 365 中的实体属性简介
TechNet:定义计算字段
TechNet:定义汇总字段

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权