我正在尝试在CRM 2016中插入自定义实体的状态和状态代码。 这是我的代码:
if (entity.LogicalName == "activitypointer")
{
if (entity.Attributes.Contains("activityid") & entity.Attributes.Contains("activitytypecode"))
{
entity.LogicalName = entity.Attributes["activitytypecode"].ToString();
entity.Id = (Guid)entity.Attributes["activityid"];
SetStateRequest setState = new SetStateRequest();
setState.EntityMoniker = entity.ToEntityReference();
setState.State = new OptionSetValue();
setState.State.Value = 2;
setState.Status = new OptionSetValue();
setState.Status.Value = 100000002;
SetStateResponse setStateResponse = (SetStateResponse)service.Execute(setState);
}
}
当我运行这个时,我会遇到异常: 100000002不是状态代码new_payState.Completed on new_pay with Id 3fbe9a4a-a733-e611-80cb-001dd8b71c1c 的有效状态代码。
当我尝试将状态代码更改为其他值2,3或其他时,我得到相同的异常。我如何找到该实体的有效代码状态列表?
谢谢!
答案 0 :(得分:3)
100000002不是有效的开箱即用状态代码,这意味着该属性已自定义并添加了选项。验证状态代码值为100000002的状态代码值(导航到自定义项,检查状态代码/ statuscode属性)。
如果您不熟悉CRM的方式,请尝试所有列出的州代码。
活动指针的有效开箱即用状态代码+状态代码组合列表为:
statecode - statuscode
0 (Open) - 1 (Open)
1 (Completed) - 2 (Completed)
2 (Cancelled) - 3 (Cancelled)
3 (Scheduled) - 4 (Scheduled)
答案 1 :(得分:1)
如果您有权访问数据库,则可以使用此查询查看可能的状态/状态组合。
select state, status, isdefault
from statusmap
where objecttypecode = 4200 --activitypointer
状态码的关键" 100000002"表示它是您添加的自定义状态代码。确保您已发布自定义。