将新所有者分配给约会。 “活动应该只有一个所有者派对”

时间:2011-08-24 09:54:18

标签: c# dynamics-crm crm dynamics-crm-2011

我需要在创建新约会时更改约会记录的所有者。我正在使用插件来创建消息,我发现此代码将新主人分配给约会:

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);

但是当我测试这个时,我得到以下错误:无效的参数:活动应该只有一个所有者聚会

我想我必须首先删除当前所有者,然后分配新所有者。但我怎么能这样做?

感谢您的帮助!

3 个答案:

答案 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;
                }