如何在MS CRM 2013中使用REST接口设置OwnerId为BusinessUnitId
本文关键字:接口 REST 设置 OwnerId BusinessUnitId MS CRM 2013 | 更新日期: 2023-09-27 17:54:20
我有一个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(错误:没有系统用户)
- setting .OwningBusinessUnit = owner(不将所有者设置为业务单位)
- 查看。ownershipcode(但无法设置/确定那是什么)
- 删除。ownerid = line并尝试crmService。AddLink(newAccount, "ownerId", owner);(闭合类型为crmservicerreference。帐户没有相应的ownerId可设置属性)
- 删除。ownerid = line并尝试crmService。AddRelatedObject(newAccount, "ownerId", owner);(闭合类型为crmservicerreference。帐户没有相应的ownerId可设置属性)
看起来一个团队是由每个业务单元创建的,并且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" };
业务单位不能拥有记录。记录的所有者只能是一个用户或一个团队。
仅供参考,要更改所有者,需要使用AssignRequest
消息
要将新记录的所有权分配给业务单元的默认团队,请使用以下代码:
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以避免错误。我把如何处理这些问题留给你自己。