我需要在创建新约会时更改约会记录的所有者。我正在使用插件来创建消息,我发现此代码将新主人分配给约会:
entity = context.PostEntityImages["PostImage"];
......
AssignRequest request = new AssignRequest();
//request.RequestName
request.Assignee = new EntityReference("systemuser", owners.ToList()[0].Id);
request.Target = new EntityReference(Appointment.EntityLogicalName, entity.Id);
service.Execute(request);
但是当我测试这个时,我得到以下错误:无效的参数:活动应该只有一个所有者聚会
我想我必须首先删除当前所有者,然后分配新所有者。但我怎么能这样做?
感谢您的帮助!
答案 0 :(得分:5)
我正在做与任务类似的事情(在插件中重新分配它们)。作为“更新”插件,它没有任何问题,但作为“创建”它将失败,并显示消息“活动应该只有一个所有者聚会”
要修复此更改,请将“创建”插件设置为ownerid(而不是执行AssignRequest)。
targetEntity.Attributes["ownerid"] = new EntityReference(SystemUser.EntityLogicalName, assignTo.Id);
此代码进入预操作阶段。
答案 1 :(得分:1)
看起来有些数据可能已损坏。在这个帖子中,人们正在推动该人使用SQL直接从活动中删除一些所有者 - http://social.microsoft.com/Forums/en/crmdeployment/thread/d82cedee-e24e-4abc-9ec6-41306b89ed3b
如果您使用的是Dynamics CRM 2011的内部部署模型,则只有这种可能性。
答案 2 :(得分:0)
Guid id= new Guid("{33011A68-D311-E211-A429-005056820002}");
switch (context.MessageName)
{
case "Update":
{
try
{
if (ent.Contains("fieldname") == true)
{
AssignRequest assign = new AssignRequest
{
Assignee = new EntityReference("systemuser", id),
Target = new EntityReference(ent.LogicalName, ent.Id)
};
_service.Execute(assign);
}
}
catch (Exception ex)
{
throw new InvalidPluginExecutionException("Error" + Environment.NewLine + "Details: " + ex.Message);
}
}
break;
}