【问题标题】:Set up relation on two existing Salesforce objects在两个现有 Salesforce 对象上设置关系
【发布时间】:2014-01-01 15:55:06
【问题描述】:

我在 Salesforce 中有一个自定义对象,我需要从客户设置主从关系。 Accounts 是 Master,CompHist 是 Detail。我遇到的问题是我需要设置关系以处理对象中的自定义字段。示例:

1.) Accounts 有一个名为 CustomerId 的自定义字段。

2.) CompHist 还有一个名为 CustomerId 的自定义字段。

3.) 我需要能够通过 CustomerId 字段将其链接在一起以生成报告。

大约 2,000 条记录在每月 8 号左右插入 CompHist。这是通过一个 .NET 应用程序完成的,该应用程序在预定时间启动,从我们的数据库中收集信息,然后通过 SOAP API 将该数据上传到 salesforce。

也许我误解了 Salesforce 关系的运作方式,因为我对 Salesforce 开发还很陌生(几个月)。

谢谢, 兰迪

【问题讨论】:

    标签: salesforce relationship


    【解决方案1】:

    有一种方法可以在没有触发器的情况下使其工作,该触发器将链接记录或预查询 SF 以在您推送 CompHistories 之前了解 .NET 中的帐户 ID。

    设置

    在帐户上:在您的 CustomerId 字段中设置“外部 ID”复选框。我建议也设置“唯一”。

    在 CompHist 上:您需要决定是否可以移动它们,或者何时设置与 Account 的关系 - 它将永远保持这种状态。当您做出该决定时,在您的查找定义中勾选/取消勾选“可复制的主详细信息”/ m-d 到帐户。

    如果您对这些详细信息有一些 Id,例如“行项目编号” - 考虑制作一个分机。 ID。也为他们。将来当最终用户质疑报告时可能会节省您的培根,否则您将不得不进行某种“刷新”并从 .NET 推送所有行(将帮助您确定要插入的内容,要更新的内容)。

    此时考虑如何填充缺失的数据(Ext.Id 中的所有空值)字段很有用。


    实际建立关系

    如果您设置了外部 ID,则很容易告诉销售人员为您找出链接。该操作称为upsert(在updateinsert 之间混合),可用于两种风格。

    "Basic" upsert 用于创建/更新解决;意思是“亲爱的 Salesforce,请用 MyId=1234 保存这条 CompHist 记录。我不知道你数据库中的 ID 是什么,坦率地说我不在乎,你去弄清楚好吗?

    • 如果没有这样的记录 - 将创建 1。
    • 如果正好有 1 个匹配项 - 将会更新。
    • 如果找到超过 1 个 - SF 将不知道要更新哪一个并将错误返回给您(这就是为什么将其标记为“唯一”是个好主意。您有可能更快发现错误)。

    "Advanced" upsert 用于维护外键,建立查找。 “亲爱的 SF,请将此 CompHist 连接到我的数据库中标记为“ABZ123”的帐户。我有没有提到我不关心你的 ID,我也懒得在之前先查询你的数据库我上传我的东西?

    • 再次 - 完全匹配 - 按预期工作。
    • 0 或 2 个具有相同分机的帐户。 id 值 = 错误。

    请代码

    我建议您首先使用 Data Loader 或类似工具来掌握。究竟发生了什么,如何映射字段以及如何不混淆(这两种类型的 upsert 可以同时使用)。一旦您设法以您希望的方式推送更改,您就可以稍微修改您的集成。

    SOAP API upsert:http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_upsert.htm(C# 示例在底部)

    REST API:http://www.salesforce.com/us/developer/docs/api_rest/Content/dome_upsert.htm

    如果您更喜欢 Salesforce Apex 示例:Can I insert deserialized JSON SObjects from another Salesforce org into my org?

    【讨论】:

    • 阅读您的帖子后,我突然想到:1.) 截断 CompHist 对象。 2.) 创建关系 3.) 在我的 .NET 应用程序中,我需要向 SF 查询帐户的 Salesforce ID。然后在为该帐户插入数据时,我强制 Salesforce 在将数据插入 CompHist 时使用该 ID?
    • 这将基本上链接我拥有的自定义 ID,但销售人员仍将使用它为帐户创建的 ID?
    • 为什么要从 CompHist 中删除任何数据?您上面有“CustomerId”和帐户的查找/主详细信息,对吗?还是这些领域还没有?您可以在插入之前查询 SF 的 Account 字段......但我的回答的重点是向您展示您如何根本不必这样做,如何告诉 Salesforce 为您解决此匹配问题。
    • 我今天没有时间,但如果你愿意,我们可以在明天晚上进行聊天(我在格林威治标准时间)
    • 今天有时间我会看看你发送的链接。是的,这两个字段都在我需要链接的对象中,但 Salesforce 告诉我,如果不先创建查找关系,我就无法创建主详细信息。我敢肯定你知道你在说什么,而且我是 SF 的新手,可能想多了。所以如果你愿意花几分钟时间聊天会很酷(我是 EST -5 GMT)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 2015-11-27
    • 1970-01-01
    • 2012-09-27
    相关资源
    最近更新 更多