我试图通过数据库中产品的CRM网络服务将“StatE代码”(Active | Inactive)更新为Active。
...
crmProduct.statecode = new ProductStateInfo() { Value = ProductState.Active };
//crmProduct.statuscode = new Status() { Value = 1 };
crmProduct.name = "...";
service.Update(crmProduct);
它似乎工作正常,我没有错误,名称也发生了变化,但它仍然处于非活动状态!
当尝试将“StatUS代码”设置为“活动”时,我收到一条错误消息,指出当状态为“无效”时我无法将状态设置为“活动”...但我同时将两者都设置为“活动”...嗯...现在这里没有错...
任何线索?
答案 0 :(得分:6)
保存实体时,设置状态代码无效。您必须使用适当的SetState请求。正如Matt所说,对于动态实体,这是SetStateDynamicEntityRequest。在您的情况下,我假设您正在使用“产品”对象,因此您需要使用SetStateProductRequest类。
var request = new SetStateProductRequest()
{
EntityId = [GUID of product],
ProductState = ProductState.Active,
ProductStatus = -1
}
var response = (SetStateProductResponse)crmService.Execute(request);
点击此链接:http://msdn.microsoft.com/en-us/library/bb958061.aspx
ProductStatus的-1告诉CRM使用适当的州状态代码的默认状态码值。
答案 1 :(得分:2)
您必须使用SetStateDynamicEntityRequest来更新记录的状态。您可以使用常规更新消息更新状态代码,但前提是您正在更新的代码与当前记录所处的状态相同,如您所见。