当我使用插件创建案例时,我尝试检索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”创建时,该自动编号不能运行,而当其他用户创建案例时,该自动编号将运行。
如何使首次检索成功?并且以前没有检索过用户?
谢谢。
答案 0 :(得分:0)
我假设您的插件在“预创建”步骤中运行。在该步骤中,CreatedBy和CreatedOn不可用(可能是因为尚未保存记录)。
如果您只是想让执行了触发插件操作的用户,请使用context.InitiatingUserId。您也可以查看WhoAmI请求的文档。
希望有帮助!