我有一个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();
我也试过了:
答案 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以避免错误。我将离开你处理这些问题的方式。