3

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

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

什么有效

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

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

这两个模块之间的关系是“多对多”的。Opportunities 是主要模块,Contacts 是次要模块,关系名称是“opportunities_contacts”。任何一个Contact 可以关联到多个Opportunity,并且任何一个Opportunity 可以关联到多个Contact。

什么不起作用

使用一个自定义模块(应用程序,在模块生成器中创建和部署)和一个默认模块(联系人):我无法使用以下公式使 Applications.name 正确引用联系人中的相同两个字段:

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

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

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

我错过了什么?

显然,这两种场景的不同之处在于关系的类型。我不明白这种不同关系的技术含义。换句话说,为什么 Opportunities 模块知道$contactsApplications 模块什么时候不知道?

是吗...

  1. 如何存储“多对多”与“一对多”关系的性质?或者,
  2. 在第一种情况下,计算字段位于关系的“主要模块”中,而在第二种情况下,计算字段位于关系的“次要模块”中?或者,
  3. 完全不同的东西?

这个问题的答案可能表明我可能会尝试不同的方式来完成我想要的。

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

自从最初提交这个问题以来,我尝试了更多的事情。

  • 我重新创建了一对多关系,以便Applications 是主要模块, Contacts 是次要模块,但无济于事。发生同样的错误。这告诉我上面的#2 不是问题。
  • 我尝试了一个不同的公式,从 Opportunities 中访问一个字段,该字段与 Applications具有一对一的关系。发生同样的错误,这次告诉我“未知领域:机会”。这告诉我,导致问题的不一定是“一对多”关系,如上面的#1,但也许它不是“多对多”关系这一事实。

所需的答案有两个部分

我想了解不同行为的原因,并且我还想知道访问相关模块中的字段(在“一对多”的“一”侧)以自动填充我的新模块中的计算字段(在“一对多”的“多”方面)。

我的谢谢,提前!

4

1 回答 1

3

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

于 2013-09-21T05:15:00.687 回答