【发布时间】:2013-09-14 00:33:25
【问题描述】:
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”。任意一个联系人可以关联多个商机,任意一个商机可以关联多个联系人。
什么不起作用
使用一个自定义模块(应用程序,在模块生成器中创建和部署)和一个默认模块(联系人):我 无法 使 Applications.name 正确引用 same 来自联系人的两个字段,使用以下公式:
concat(related($contacts, "last_name"), ", ",related($contacts, "first_name")," - ", getDropdownValue("timeline_options", $timeline_choice))
这两个模块之间的关系是“一对多”的。 Contacts 是主要模块,Applications 是次要模块,关系名称是“contacts_applications”。一个联系人可以有任意数量的应用程序,但每个应用程序只能与一个联系人相关。
当我尝试保存公式时,我在弹出消息中看到:“未知字段:联系人”
我错过了什么?
显然,这两种情况的不同之处在于关系的类型。我不明白这种不同关系的技术含义。换句话说,为什么 Opportunities 模块知道 $contacts 而 Applications 模块不知道?
是不是……
- 如何存储“多对多”与“一对多”关系的性质?或者,
- 在第一种情况下,计算字段位于关系的“主要模块”中,而在第二种情况下,计算字段位于关系的“次要模块”中?或者,
- 别的东西完全?
这个问题的答案可能表明我可能会尝试不同的方法来完成我想要的。
更新...什么仍然不起作用
自从最初提交这个问题以来,我又尝试了几件事。
- 我重新创建了一对多关系,以便 应用程序是主要模块,联系人是次要模块,但无济于事。发生同样的错误。这告诉我上面的 #2 不是问题。
- 我尝试了一个不同的公式,从 Opportunities 中访问一个字段,该字段与 Applications 具有一对一的关系。发生同样的错误,这次告诉我“未知领域:机会”。这告诉我,导致问题的不一定是“一对多”关系,如上面的#1,但也许它不是“多对多”的事实”的关系。
所需的答案有两个部分
我想了解不同行为的原因,并且我还想知道访问相关模块中字段的最佳方式(在“一个” “一对多”的一侧),以便在我的新模块中自动填充计算字段(在“一对多”的“多”一侧)。
提前致谢!
【问题讨论】:
-
感谢您的提问!你能告诉我们这是哪个版本的 SugarCRM 吗?
-
@jmertic Professional, v. 6.4.2 托管在我们的服务器上。我也会将该信息添加到原始问题中。
-
我怀疑链接可能不是 $contacts 而是其他名称,请检查实际链接名称。您可以在 Studio/MB 中检查它,也可以转到 cache/modules/YOURMODULENAME/YOURMODULENAMEvardefs.php 并检查那里列出的字段。
-
@StasM 这正是问题所在!我通过查看缓存的 vardefs 文件找到了真实的字段名称。您能否将您的评论变成答案,以便我接受?谢谢!
标签: sugarcrm