共用方式為


計算和彙總屬性

 

發行︰ 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。 計算或彙總欄位無效。

    一般這個欄位參照不再存在的屬性。

注意

一個或多個條件對任何計算或彙總欄位可能成立。 由於這是遮罩位元值,當執行位元遮罩作業時,您可能會發現使用 SourceTypeMasks 列舉 非常實用。

計算屬性

計算屬性是在擷取時即時計算。 計算屬性可使用不同資料類型撰寫。 例如,整數計算屬性可以參照小數或貨幣屬性的值。其他資訊:TechNet:定義導出欄位

在擷取外掛程式管線中,計算屬性值為可見。 實體記錄更新或建立的後置影像包含階段 40 的計算屬性值。其他資訊:事件執行準銷售案源

限制

參照相關實體、其他計算屬性或在同一實體的邏輯值的計算屬性值不可以用來排序查詢傳回的資料。 雖然您的查詢可以指定應該使用計算屬性來排列結果,但是將忽略排序方向且不會擲回錯誤。 如果計算屬性只參照相同記錄的簡單值,排序通常會正常運作。 您可以在屬性中繼資料上使用 SourceTypeMask 屬性,判斷用於導出欄位中的來源。其他資訊:邏輯屬性

只有上一層實體的屬性可以用於計算屬性。

已儲存的查詢、圖表與視覺效果最多可有 10 個唯一計算屬性。

計算屬性在其公式可參照其他計算屬性,但無法參照其本身。

行 Microsoft Dynamics 365 for Outlook 的使用者離線時,計算屬性沒有值。

MaxValueMinValue 中繼資料屬性無法在計算屬性上設定

彙總屬性

因為彙總屬性在資料庫中保存,它們可以用於篩選來排序,就如同一般屬性。 任何一種種程序或外掛程式將使用屬性最新計算的值。 彙總屬性值由排程系統作業以非同步方式計算。 管理員會設定何時執行工作或暫停工作。 根據預設,每個屬性每小時更新一次。其他資訊:TechNet:定義彙總欄位

當新增或更新彙總屬性時,大量計算彙總欄位工作會排程在 12 小時後執行。 12 小時延遲是要在對使用者影響最小的時間執行這項需要大量資源的作業。 在工作完成後,下次排程在未來 10 年後執行。 如果有計算的問題,這將使用系統作業報告。 在 [設定] > [系統作業] 的系統作業中找到彙總欄位的任何錯誤。

提示

身為開發環境中測試解決方案的開發人員,您可能不想等待 12 小時。 可讓它更快速進行。 在 [系統作業] 清單中,使用 [週期性系統作業] 檢視來篩選清單並尋找 [大量計算彙總欄位] 工作。 選取工作時,使用 [其他動作] > [延期],將時間設定為更快速發生。

若要以程式設計方式觸發新 [大量計算彙總欄位] 工作的建立,請使用 RetrieveAttributeRequest 擷取彙總屬性的 AttributeMetadata,並使用 UpdateAttributeRequest 更新屬性,不做任何真實的變更。

大量計算彙總欄位工作會在包含彙總屬性的解決方案匯入時立即執行。 此假設,您在不會對使用者造成負面影響的時間安裝解決方案。

實體每一彙總屬性也包含彙總屬性的兩個支援屬性:

  • <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. 著作權所有,並保留一切權利。 著作權