在两个现有Salesforce对象上设置关系

时间:2013-12-13 18:58:49

标签: salesforce relationship

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

1。)帐户有一个名为CustomerId的自定义字段。

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

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

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

也许我误解了Salesforce关系如何运作,因为我对Salesforce开发相当新(几个月)。

谢谢, 好色

1 个答案:

答案 0 :(得分:3)

有一种方法可以在没有触发器的情况下使用它来链接记录或预先查询SF以便在推送CompHistories之前在.NET中学习帐户ID。

<强>设置

帐户:在CustomerId字段上设置“外部ID”复选框。我也建议设置“Unique”。

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

如果你对这些细节有一些ID,比如“行项目编号” - 考虑制作一个Ext。 ID。他们也是。未来当最终用户对报告提出疑问时,你可能会保留你的培根,或者你必须做出某种“冲洗”并从.NET推送所有行(这将帮助你弄清楚要插入什么,要更新什么)。 / p>

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


实际建立关系

如果您设置了外部ID,则很容易告诉salesforce为您找出链接。该操作称为upsert(在updateinsert之间混合),可以使用两种方式。

“基本”upsert用于创建/更新解决;意思是“亲爱的Salesforce,请用MyId = 1234保存这个CompHist记录。我不知道你的数据库中的Id是什么,坦白说我不在乎,去看看这个会不会?”< / p>

  • 如果没有这样的记录 - 将创建1个。
  • 如果恰好有1场比赛 - 它将会更新。
  • 如果找到超过1个 - SF将不知道更新哪个并向您抛出错误(这就是为什么标记为“唯一”是一个好主意。有可能您会更快地发现错误)。

“高级”upsert用于维护外键,建立查找。 “亲爱的SF,请将此CompHist挂钩到我的数据库中标记为”ABZ123“的帐户。我是否提到我不关心您的ID,我不能打扰先查询您的数据库我上传我的东西?

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

代码plz

我建议您先使用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?