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

eror when retrieve createdby field in crm using plugin

我在用插件创建案例时尝试检索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"创建时,自动编号不能运行,当案例由其他用户创建时,自动编号将运行.

如何使第一次检索成功?并且之前没有检索到用户?

谢谢。

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

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

希望对您有所帮助!