SugarCRM计算字段,访问一对多相关模块中的字段

时间:2013-09-14 00:33:25

标签: sugarcrm

SugarCRM具有强大的功能,允许引用相关模块中的字段来自动填充主模块中的字段。但是,我无法明确地确定为什么我可以在一个模块中工作,而不是另一个模块。我怀疑,但如果我是对的,我必须找到另一种方法来完成同样的事情。

这适用于我们自己的服务器上托管的SugarCRM Professional 6.4.2。

什么有效

使用两个默认模块(联系人,机会):我可以使用以下公式使Opportunities.name成为引用联系人中两个字段的计算字段:

concat(related($contacts, "last_name"), ", ",related($contacts, "first_name")," - ", getDropdownValue("timeline_options", $timeline_interest_c))

这两个模块之间的关系是“多对多”。机会是主要模块,联系人是次要模块,关系名称是“opportunity_contacts”。任何一个联系人都可以与多个机会相关,任何一个机会都可以与多个联系人相关。

什么不起作用

使用一个自定义模块(在Module Builder中创建和部署的应用程序)和一个默认模块(Contacts):我能够使Applications.name正确引用相同< / em>来自“联系人”的两个字段,使用以下公式:

concat(related($contacts, "last_name"), ", ",related($contacts, "first_name")," - ", getDropdownValue("timeline_options", $timeline_choice))

这两个模块之间的关系是“一对多”。 Contacts是主要模块,Applications是次要模块,关系名称是“contacts_applications”。一个联系人可以拥有任意数量的应用程序,但每个应用程序只能与一个联系人相关。

当我尝试保存公式时,我会在弹出消息中显示:“未知字段:联系人”

我想念的是什么?

显然,这两种情景中不同的是关系类型。我不明白的是这种不同关系的技术含义。换句话说,为什么“机会”模块在“应用程序”模块没有时知道$contacts

是......

  1. 如何存储“多对多”与“一对多”关系的性质?或者,
  2. 事实上,在第一种情况下,计算的字段位于关系的“主要模块”中,而在第二种情况下,计算的字段位于关系的“次要模块”中?或者,
  3. 其他完全
  4. 这个问题的答案可能暗示我可能会尝试不同的方式来实现我想要的目标。

    更新......什么仍然不起作用

    自从最初提交这个问题以来,我已经尝试了更多的东西。

    • 我重新创建了一对多关系,以便应用程序是主要模块,而联系人是辅助模块,但无济于事。发生同样的错误。这告诉我上面的#2不是问题。
    • 我尝试了一个不同的公式,从Opportunities访问一个字段,该字段与Applications有一对一的关系。发生同样的错误,这次告诉我“Unknown field:opportunities”。这告诉我,不一定是“一对多”关系导致问题,如上面的#1,但也许事实上它不是“多对多” “关系。

    所需答案有两部分

    我想了解不同行为的原因,我也希望知道最佳方式来访问相关模块中的字段(在“一个”上) “一对多”的一面,以便在我的新模块中自动填充计算字段(在“一对多”的“许多”一侧)。

    我的提前谢谢!

1 个答案:

答案 0 :(得分:3)

问题似乎是$contact不是链接的实际名称,但链接可能被命名为其他名称。您可以在Studio / MB中找到链接的名称,也可以直接查看存储在cache/modules/YOURMODULENAME/YOURMODULENAMEvardefs.php的元数据文件。元数据文件是权威来源 - 它是SugarCRM如何查看对象的字段,包括链接,因此链接也应该在那里,并且那里指定的名称应该有效。