.net 我可以在CRM 2011中按插件创建非活动记录吗?

.net 我可以在CRM 2011中按插件创建非活动记录吗?,.net,dynamics-crm-2011,dynamics-crm,.net,Dynamics Crm 2011,Dynamics Crm,在Microsoft CRM 2011中,有没有办法通过插件创建非活动记录?我可以使用setStateRequest类和IOOrganizationService。执行方法更改现有记录的状态。由于此方法需要记录Id,因此无法在新记录上使用 是否可以立即创建非活动记录,还是必须创建新的活动记录并在创建后将其停用 直接设置状态/状态(即使在新记录上) EntityToSave[“statecode”]=新选项设置值(state); EntityToSave[“statuscode”]=新选项设置值(

在Microsoft CRM 2011中,有没有办法通过插件创建非活动记录?我可以使用
setStateRequest
类和
IOOrganizationService。执行
方法更改现有记录的状态。由于此方法需要记录Id,因此无法在新记录上使用

是否可以立即创建非活动记录,还是必须创建新的活动记录并在创建后将其停用

直接设置状态/状态(即使在新记录上)

EntityToSave[“statecode”]=新选项设置值(state);
EntityToSave[“statuscode”]=新选项设置值(状态);
导致错误:

2 is not a valid status code for state code ProductState.Active on product

您需要先创建记录,然后使用
SetStateRequest
停用记录


没有其他方法继续。

我认为您应该能够注册一个插件,该插件在创建消息的Post操作步骤中运行,该插件使用SetStateRequest将实体更新为非活动。只要它是第一个启动的插件,系统中的其他所有东西都会认为它是在非活动状态下创建的

这将导致执行任何SetStateDynamicEntity插件,但您也可以使用插件执行变量来处理该问题

更新
由于CRM 2015 U1,您不应该使用SetStateRequest。只需在Post Create中使用标准的update语句。

CRM 2015 update 1和后续版本中不再需要SetStateRequest。@Daryl:那么CRM 2015需要做什么?谢谢大家!@Walloud只需将状态和状态代码更新为needed@Daryl:谢谢你的快速回复。然而,对于状态,我们有OpSETSET值从CRM可见,这不是状态的情况,所以我认为0的值为Active和1为不活动?感谢you@Walloud一般来说是的。我使用早期绑定实体来帮助实现这一点。您还可以搜索DLaB.Xrm NuGet包。它包含ActivePropertyInfo和LateBoundActivePropertyInfo类,这些类将为实体提供ActiveState或NotActive状态。