如何设置机会状态 - Dynamics CRM?
How to set the Opportunity Status - Dynamics CRM?
我正在尝试使用 WinOpportunityRequest & LoseOpportunityRequest API 中提供的 open opportunity 更新状态MSDN。
我遵循了 MSDN 中给出的代码,我什至提到了 Whosebug 的
但是,当我 运行 以下代码用于 开放机会 时,它会抛出错误,指出
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);
错误-
4 is not a valid status code on opportunity with Id(Guid)
当我尝试更改 已关闭机会 的状态时,它显示 机会已关闭。
还需要考虑的一件事是我的 CRM 中的此状态有一个挂锁图标,表示它已锁定。
那么是否可以更改状态,是否基于角色?
对于开放的机会,我们可以将状态更改为赢或输。所以我们将在here.
中使用WinOpportunityRequest和LoseOpportunityRequest
因此,我们需要将值更改为-1,以便CRM 可以加载默认状态代码。
req.Status = new OptionSetValue(4);
改成-1后不会抛出任何异常
req.Status = new OptionSetValue(-1);
执行调用后。机会价值将更改为丢失。商机将被关闭。
要重新打开已关闭的机会,我们可以使用 SetStateRequest class。代码如下。
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);
执行调用后,机会状态设置回打开,状态显示为打开。
州代码与状态不同。状态码可以有open、win或close。状态可以有多个值。 msdn.
提供了详细信息
你是对的。 State 和 Status 是连体双胞胎。不能只更新其中一个,总是成对更新。
州 = 州代码
状态原因 = StatusCode(带挂锁的字段)
在您的答案代码中,这在 SetStateRequest 请求中被正确构造。
req.State = new OptionSetValue(0);
req.Status = new OptionSetValue(2);
但在 OP 中,您只设置 Status 而不是 State。
每 MSDN, LoseOpportunityRequest
with OpportunityClose
entity has to close it without issues when you pass only Status. But you are not alone.
我正在尝试使用 WinOpportunityRequest & LoseOpportunityRequest API 中提供的 open opportunity 更新状态MSDN。
我遵循了 MSDN 中给出的代码,我什至提到了 Whosebug 的
但是,当我 运行 以下代码用于 开放机会 时,它会抛出错误,指出
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);
错误-
4 is not a valid status code on opportunity with Id(Guid)
当我尝试更改 已关闭机会 的状态时,它显示 机会已关闭。
还需要考虑的一件事是我的 CRM 中的此状态有一个挂锁图标,表示它已锁定。
那么是否可以更改状态,是否基于角色?
对于开放的机会,我们可以将状态更改为赢或输。所以我们将在here.
中使用WinOpportunityRequest和LoseOpportunityRequest因此,我们需要将值更改为-1,以便CRM 可以加载默认状态代码。
req.Status = new OptionSetValue(4);
改成-1后不会抛出任何异常
req.Status = new OptionSetValue(-1);
执行调用后。机会价值将更改为丢失。商机将被关闭。
要重新打开已关闭的机会,我们可以使用 SetStateRequest class。代码如下。
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);
执行调用后,机会状态设置回打开,状态显示为打开。
州代码与状态不同。状态码可以有open、win或close。状态可以有多个值。 msdn.
提供了详细信息你是对的。 State 和 Status 是连体双胞胎。不能只更新其中一个,总是成对更新。
州 = 州代码
状态原因 = StatusCode(带挂锁的字段)
在您的答案代码中,这在 SetStateRequest 请求中被正确构造。
req.State = new OptionSetValue(0);
req.Status = new OptionSetValue(2);
但在 OP 中,您只设置 Status 而不是 State。
每 MSDN, LoseOpportunityRequest
with OpportunityClose
entity has to close it without issues when you pass only Status. But you are not alone.