我们发现,不能简单地将商机与产品相关联,因为可以通过设置字段使用opportunity-account或opportunity-contact来完成此操作
"customerid_contact@odata.bind" : "/contacts({contact_guid})" MS文档https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/opportunityproduct?view=dynamics-ce-odata-9提到了opportunityproduct实体。
有人知道这是如何工作的吗?是否必须以某种方式创建一个opportunityproduct实体并将productid映射到opportunityid?
发布于 2020-06-05 10:30:06
是的,您认为需要使用opportunityproduct将Product和Opportunity关联在一起,这一想法是正确的。您可以将其视为N:M关系,其中opportunityproduct是相交实体,尽管它不是CRM中两个实体之间的N:M关系。
使用SDK将opportunity关联到opportunity产品,并将产品关联到opportunity产品:https://docs.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.iorganizationservice.associate?view=dynamics-general-ce-9
发布于 2020-06-06 02:35:27
有两种方法可以创建多对多关系。一种是原生,它不公开交集实体;另一种是手动。
想一想,本机多对多可以通过链接或关联两条记录来创建,尽管有一个内部的intersect实体来存储这可以在高级查找查询中使用,但是没有实体表单来查看记录。所以没有额外的字段。
然而,在手册中,多对多-交集实体是一个物理实体(如opportunityproduct),存储了两个相关的实体查找(opportunityid和productid),并且还可以向该实体添加更多的自定义字段。表单可用于此实体,并且可以自定义。
您可以使用带有两个查找ids service.Associate()消息或简单service.Create()消息来创建相交实体记录。
对于web查询,我建议您使用CRM REST builder工具来编写和测试查询。
示例:
var entity = {};
entity["productid@odata.bind"] = "/products(CB14D0FF-82A6-EA11-A812-000D3A32CA3C)";
entity["opportunityid@odata.bind"] = "/opportunities(5B67A6B7-3C5A-EA11-A811-000D3A5A1CAC)";
entity["uomid@odata.bind"] = "/uoms(BF07B35A-8AB2-4CFC-9475-71F8A5FB1D05)";
entity.opportunityproductname = "arun test";
entity.quantity = 5;
Xrm.WebApi.online.createRecord("opportunityproduct", entity).then(
function success(result) {
var newEntityId = result.id;
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);https://stackoverflow.com/questions/62123034
复制相似问题