使用插件检索 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 请求的文档。
希望对您有所帮助!
我在用插件创建案例时尝试检索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 请求的文档。
希望对您有所帮助!