使用插件检索crm中的createdby字段时出错

时间:2018-11-09 09:41:48

标签: dynamics-crm dynamics-crm-365

当我使用插件创建案例时,我尝试检索createdby字段,但是第一次检索失败,并且第二次及其后的检索均成功。然后,当我注销并与其他用户登录时,第一次检索失败(检索结果是我更改用户之前的用户),并且第二次及其后的检索均成功。

这是我写的代码:

    public void Execute(IServiceProvider serviceProv)
    {
        IPluginExecutionContext context = (IPluginExecutionContext)serviceProv.GetService(typeof(IPluginExecutionContext));
        IOrganizationServiceFactory servicefac = (IOrganizationServiceFactory)serviceProv.GetService(typeof(IOrganizationServiceFactory));
        IOrganizationService service = servicefac.CreateOrganizationService(context.UserId);
        ITracingService trace = (ITracingService)serviceProv.GetService(typeof(ITracingService));

        if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
        {
            Entity ent = (Entity)context.InputParameters["Target"];

            if (ent.LogicalName != "incident")
                return;

            QueryExpression qe = new QueryExpression("incident");
            string[] cols1 = { "createdby" };
            qe.ColumnSet = new ColumnSet(true);

            EntityCollection ec = service.RetrieveMultiple(qe);
            foreach (Entity act in ec.Entities)
            {
                created = act. GetAttributeValue<EntityReference>("createdby").Name;
            }

            if (created == "CRM SNA")
            {
                created = string.Empty;
            }
            else
            {
                //here is the autonumber code
                created = string.Empty;
            }
        }
    }

我要制作的是一个自动编号插件,当案例由“ CRM SNA”创建时,该自动编号不能运行,而当其他用户创建案例时,该自动编号将运行。

如何使首次检索成功?并且以前没有检索过用户?

谢谢。

1 个答案:

答案 0 :(得分:0)

我假设您的插件在“预创建”步骤中运行。在该步骤中,CreatedBy和CreatedOn不可用(可能是因为尚未保存记录)。

如果您只是想让执行了触发插件操作的用户,请使用context.InitiatingUserId。您也可以查看WhoAmI请求的文档。

希望有帮助!