【问题标题】:dynamics 365 API 9.1 how to associate opportunity to productdynamics 365 API 9.1 如何将机会与产品相关联
【发布时间】:2020-05-31 22:04:31
【问题描述】:

我们发现不能简单地将机会与产品相关联,因为它可以通过设置字段与机会帐户或机会联系人来完成

"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 实体。

有人知道这是如何工作的吗?必须以某种方式创建一个机会产品实体并将产品 ID 与机会 ID 映射吗?

【问题讨论】:

  • 解决了吗?

标签: rest dynamics-crm microsoft-dynamics dynamics-365 dynamics-crm-webapi


【解决方案1】:

是的,您认为需要使用机会产品将产品和机会关联在一起是正确的。您可以将此视为 N:M 关系,其中机会产品是相交实体,尽管它不是 CRM 中两个实体之间的 N:M 关系。

使用 SDK 将机会与机会产品和产品与机会产品相关联:https://docs.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.iorganizationservice.associate?view=dynamics-general-ce-9

【讨论】:

    【解决方案2】:

    有两种方法可以创建多对多关系。一个是native,它不暴露相交实体,另一个是ma​​nual

    想一想,本地多对多可以通过链接或关联两条记录来创建,虽然有一个内部相交实体存储它,但可以在高级查找查询中使用,但没有实体形式来查看记录。所以没有额外的字段。

    然而,在手动多对多中 - 相交实体是一个物理实体(如 opportunityproduct),存储两个相关的实体查找(opportunityidproductid),还可以向该实体添加更多自定义字段。表单可用于该实体并且可以自定义。

    您可以使用带有两个查找 ID 的 service.Associate() 消息或简单的 service.Create() 消息来创建相交实体记录。

    对于 web api 查询,我建议您使用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);
        }
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      相关资源
      最近更新 更多