簡體   English   中英

如何設置機會狀態-Dynamics CRM?

[英]How to set the Opportunity Status - Dynamics CRM?

我正在嘗試使用MSDN中提供的WinOpportunityRequest和LoseOpportunityRequest API更新開放機會的狀態。 我遵循了MSDN中給出的代碼,甚至提到了stackoverflow的“ 設置機會狀態”

但是,當我為公開機會運行以下代碼時,會引發錯誤,指出

LoseOpportunityRequest req = new LoseOpportunityRequest();
Entity opportunityClose = new Entity("opportunityclose");
opportunityClose.Attributes.Add("opportunityid", new EntityReference(OptyEntityName, new Guid("xxxx-xxx")));
opportunityClose.Attributes.Add("subject", "Lost the Opportunity!");
req.OpportunityClose = opportunityClose;
// 4 = Cancelled and 5 = Out-Sold
req.Status = new OptionSetValue(4);
LoseOpportunityResponse resp = (LoseOpportunityResponse)_serviceProxy.Execute(req);

錯誤-

Id(Guid)上的機會不是有效的狀態碼4

當我嘗試更改已關閉機會的狀態時,它表示該機會已經關閉

需要考慮的另一件事是,我的CRM中的此狀態帶有一個掛鎖圖標,表示它已被鎖定。

那么是否可以更改狀態,是否基於角色?

對於開放的機會,我們可以將狀態更改為贏或輸。 因此,我們將在此處使用WinOpportunityRequestLoseOpportunityRequest

因此,我們需要將值更改為-1,以便CRM可以加載默認狀態代碼。

req.Status = new OptionSetValue(4);

更改為-1后,不會引發任何異常。

req.Status = new OptionSetValue(-1);

一旦執行了執行調用。 機會價值將變為丟失。 機會將被關閉。

要重新打開已關閉的機會,我們可以使用SetStateRequest類 代碼如下。

                var stateRef = new EntityReference("optyname", new Guid("optyid"));
                SetStateRequest req = new SetStateRequest();
                req.State = new OptionSetValue(0);
                req.Status = new OptionSetValue(2);
                req.EntityMoniker = stateRef;
                SetStateResponse stateSet = (SetStateResponse)_serviceProxy.Execute(req);

執行執行調用后,機會狀態將重新設置為打開,並且狀態顯示為打開。

狀態碼與狀態不同。 狀態代碼可以具有打開,贏得或關閉狀態。 狀態可以有多個值。 詳細信息在msdn中提供。

你是對的。 狀態和狀態是雙胞胎。 您不能僅更新其中之一,請始終配對。

在此處輸入圖片說明

狀態= StateCode
狀態原因= StatusCode(帶有掛鎖的字段)

閱讀更多

在您的答案代碼中,這在SetStateRequest req中正確構建。

req.State = new OptionSetValue(0);
req.Status = new OptionSetValue(2);

但是在OP中,僅設置狀態而不是狀態。

根據MSDN ,僅通過狀態時,帶有OpportunityClose實體的LoseOpportunityRequest必須關閉它而沒有問題。 但是你並不孤單

參考: 機會機會關閉

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM