【问题标题】:Populating a field when choosing a relate field _ suite crm选择相关字段时填充字段_suite crm
【发布时间】:2016-12-09 14:49:08
【问题描述】:

我正在使用套件 crm 7.7.5

当我创建机会并从相关字段中选择帐户时,我希望字段(国家/地区)自动填充所选帐户所在国家/地区的值。

为此,我尝试添加代码

    $dictionary['Opportunity']['fields']['country_c']['populate_list']= array('id','name','country_c');
$dictionary['Opportunity']['fields']['country_c']['field_list'] = array('account_id_c','account_name','country_c');

在文件 \custom\Extension\modules\Opportunities\Ext\Vardefs\sugarfield_country_c.php 中

知道 country_c 是表 accounts 中的列 country 的名称,第二个 country_c 是布局机会中字段 country 的 id

但这不起作用,有人可以帮我找出原因吗?

PS:我已经尝试按照本教程进行操作https://developer.sugarcrm.com/2011/08/31/howto-using-a-relate-field-to-populate-a-custom-field/

【问题讨论】:

  • 看起来这个链接中的人说它不适用于标准模块,所以这可以解释它:developer.sugarcrm.com/2012/06/20/…
  • 这篇文章是关于快速搜索的,我正在寻找自动填充字段,在机会的编辑视图中,在弹出窗口中选择帐户名称后

标签: sugarcrm suitecrm


【解决方案1】:

这是@Bozic 解决方案的扩展。

如果有人试图根据选择自动填充相关字段,那么这就是解决方案。 (那些面临“字段不匹配:帐户名称”的人)

场景:我在帐户模块中有帐户所有者(与用户模块相关)字段。在案例模块中,我正在根据帐户选择获取帐户所有者字段。

在 /custom/modules/Cases/metadata/editviewdefs.php 中

 0 => array(
             'name'=>'account_name',
             'displayParams' => array (
             'field_to_name_array' => array(
             'id'=>'account_name',
             'assigned_user_name' => 'account_owner_case_c', 
             'assigned_user_id' => 'user_id2_c',
         ),
     ),
  ),

注意:

  • assigned_user_name 是帐户模块中帐户所有者的字段 ID
  • assigned_user_id 是 Account owner 的 id 字段
  • 案例模块中案例帐户所有者的 account_owner_case_cis 字段
  • account_name 是案例模块中的选择字段(在选择此字段时,帐户所有者将被填充)

【讨论】:

    【解决方案2】:

    您应该转到 custom/modules/{YOUR MODULE}/metadata/editviewdefs.php 并编辑 editviewdefs.php 文件。
    首先您需要找到定义了相关字段(account_name)的数组。它看起来与此类似,可能还有更多参数。

    array (
        'name' => 'account_name',
    ),
    

    现在您需要将相关字段(country_c) 中的数据映射到新字段(假设为populated_country_c)。编辑后您的数组将如下所示。

    array (
        'name' => 'account_name',
        'displayParams' => array (
            'field_to_name_array' => array(
                'id'=>'account_id_c',
                'name'=>'account_name',
                'country_c' => 'populated_country_c',
                ),
            ),
        ),
    

    现在populated_country_c 是新字段,当您在相关字段中选择帐户时,将在其中填充有关国家/地区的数据。所以我们还需要创建那个新字段。您可以通过工作室或手动添加新阵列来完成。最后,您的文件将如下所示

    array (
            'name' => 'account_name',
            'displayParams' => array (
                'field_to_name_array' => array(
                    'id'=>'account_id_c',
                    'name'=>'account_name',
                    'country_c' => 'populated_country_c',
                    ),
                ),
            ),
    array (
            'name' => 'populated_country_c',
            'label'=> 'LBL_POPULATED_COUNTRY'
            ),
    

    现在,当从相关字段中选择新帐户时,populated_country_c 将填充所选帐户中的 country_c 字段。

    【讨论】:

    • 它成功了,并且该字段是自动填充的,但是当我尝试保存机会时,我收到了这条消息“字段不匹配:帐户名称”
    • 在导航器中,我在检查帐户名称字段时发现了这段代码 var _form = document.getElementById('EditView'); _form.action.value='保存'; if(check_form('EditView')) SUGAR.ajaxUI.submitForm(_form);return false;有人知道在哪里可以找到函数 check_form 吗?
    • 我遇到了同样的错误。这是 SuiteCRM 错误,如果您以某种方式命名字段,则可以修复。也许尝试添加一些数字。我将尝试在我修复此问题的位置找到我的代码并将发布给您
    • 当我使用 'id'=>'account_id_c' 时,自动填充工作正常,但我无法保存。当我使用 'id'=>'account_id' 时,自动填充不起作用,但我可以保存新机会
    【解决方案3】:

    使用字段 billing_account_country 而不是 country_c,并且还将 account_idaccount_name 一起使用。我相信名称和 id 必须与同一张表一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多