如何使用REST界面将OwnerId设置为MS CRM 2013中的BusinessUnitId?

时间:2014-03-27 01:35:13

标签: c# rest dynamics-crm-2013

我有一个MS CRM 2013,我想使用REST接口(以及创建的VS2013代理类)将帐户上的OwnerId设置为业务单位。

我尝试了很多方法,但似乎这样的事情应该有效。但是,它会抛出“Invalid ownerIdType = 10”错误消息

var crmService = new CrmServiceReference.Context(crmUri);
var owner = crmService.BusinessUnitSet.First();
var newAccount = new CrmServiceReference.Account();
newAccount.AccountNumber = "123456";
newAccount.Name = "Hello World";
newAccount.Ownerid = new CrmServiceReference.EntityReference() { Id = owner.BusinessUnitId, Name = owner.Name, LogicalName = "businessunit" };
crmService.AddToAccountSet(newAccount);
crmService.SaveChanges();

我也试过了:

  • 仅发送Id(错误:无系统用户)
  • 设置.OwningBusinessUnit =所有者(未将所有者设置为业务单位)
  • 查看.OwnershipCode(但无法设置/确定是什么)
  • 删除.OwnerId =行并尝试crmService.AddLink(newAccount,“ownerId”,所有者); (封闭类型CrmServiceReference.Account没有相应的ownerId可设置属性)
  • 删除了.OwnerId = line并尝试了crmService.AddRelatedObject(newAccount,“ownerId”,owner); (封闭类型CrmServiceReference.Account没有相应的ownerId可设置属性)

3 个答案:

答案 0 :(得分:2)

看起来团队是为每个业务部门创建的,而ownerId应该是团队而不是业务部门,所以...

var owner = crmService.BusinessUnitSet.First();

变为

var team = crmService.TeamSet.First();

newAccount.Ownerid = new CrmServiceReference.EntityReference() { Id = owner.BusinessUnitId, Name = owner.Name, LogicalName = "businessunit" };

变为

newAccount.Ownerid = new CrmServiceReference.EntityReference() { Id = team.TeamId, Name = owner.Name, LogicalName = "team" };

答案 1 :(得分:1)

业务单位不能拥有记录。记录的所有者只能是用户或团队。

仅为了您的信息,要更改所有者,您需要使用AssignRequest消息

http://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.assignrequest.aspx

答案 2 :(得分:0)

要将新记录的所有权分配给业务单位的默认团队,请使用以下代码:

        var biz = crmService.BusinessUnitSet.First();
        var owner = crmService.TeamSet.First(x => x.BusinessUnitId.Id == biz.BusinessUnitId && x.IsDefault == true);
        var newAccount = new Account();
        newAccount.AccountNumber = "123456";
        newAccount.Name = "Hello World";
        newAccount.OwnerId = owner.ToEntityReference();

如果需要,您可以在第一行的where子句中获取特定的业务单位。

显然,您应该添加错误处理并可能更改为FirstOrDefault以避免错误。我将离开你处理这些问题的方式。