插入自定义实体状态代码

Insert custom entity statecode

我正在尝试在 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_pay 上状态代码 new_payState.Completed 的有效状态代码,ID 为 3fbe9a4a-a733-e611-80cb-001dd8b71c1c.

当我尝试将状态码更改为其他值 2,3 或其他值时,我遇到了同样的异常。我如何找到该实体的有效代码状态列表?

谢谢!

100000002 不是开箱即用的有效状态代码,这意味着该属性是自定义的,选项是 added.Verify 与状态代码值 100000002 关联的状态代码值(导航至自定义, 检查 statecode/statuscode 属性属性)。

如果您不熟悉 CRM,请尝试所有列出的州代码。

activity 指针的开箱即用有效状态代码 + 状态代码组合列表为:

statecode        -   statuscode 
0 (Open)         -   1 (Open)
1 (Completed)    -   2 (Completed)
2 (Cancelled)    -   3 (Cancelled)
3 (Scheduled)    -   4 (Scheduled)

如果您有权访问数据库,则可以使用此查询选择可能的 state/status 组合。

select state, status, isdefault 
from statusmap 
where objecttypecode = 4200 --activitypointer

状态码“100000002”的key表示这是您添加的自定义状态码。请确保您已发布自定义项。