Заполнение поля при выборе связанного поля _ suite crm

я использую пакет 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 — это название столбца country в таблице account, а второе country_c — это идентификатор поля country в макете возможности

но это не работает, может ли кто-нибудь помочь мне выяснить причину?

PS: я пытался следовать этому руководству https://developer.sugarcrm.com/2011/08/31/howto-using-a-relate-field-to-populate-a-custom-field/


person cihan17    schedule 09.12.2016    source источник
comment
Похоже, люди в этой ссылке говорят, что это не работает со стандартными модулями, так что это может объяснить это: developer.sugarcrm.com/2012/06/20/   -  person Reisclef    schedule 13.12.2016
comment
в статье речь идет о быстром поиске, я ищу автозаполнение поля, в окне редактирования возможности, после выбора имени учетной записи во всплывающем окне   -  person cihan17    schedule 21.12.2016


Ответы (3)


Вы должны перейти к custom/modules/{ВАШ МОДУЛЬ}/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 из выбранной учетной записи.

person Bozic    schedule 14.02.2017
comment
это сработало, и поле заполняется автоматически, но когда я пытаюсь сохранить возможность, я получаю это сообщение Нет соответствия для поля: Имя учетной записи - person cihan17; 28.02.2017
comment
в навигаторе я нашел этот фрагмент кода при проверке поля «Имя учетной записи» var _form = document.getElementById('EditView'); _form.action.value='Сохранить'; если (check_form ('EditView')) SUGAR.ajaxUI.submitForm (_form); вернуть ложь; Кто-нибудь знает, где найти функцию check_form? - person cihan17; 01.03.2017
comment
У меня была такая же ошибка. Это ошибка SuiteCRM, и ее можно исправить, если вы назовете свое поле определенным образом. Может быть, попробуйте добавить несколько цифр. Я постараюсь найти свой код, где я это исправил, и опубликую для вас - person Bozic; 06.03.2017
comment
Когда я использую 'id'=›'account_id_c', автоматическое заполнение работает нормально, но я не могу сохранить. Когда я использую 'id'=›'account_id', автозаполнение не работает, но я могу сохранить новую возможность - person cihan17; 15.03.2017

Вот расширение решения @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',
         ),
     ),
  ),

Примечание:

  • заданное_имя_пользователя — это идентификатор поля владельца учетной записи из модуля «Учетные записи».
  • assign_user_id — это поле идентификатора владельца учетной записи.
  • Поле account_owner_case_cis владельца счета обращения из модуля обращения
  • account_name — это поле выбора из модуля case (при выборе этого поля владелец аккаунта будет заполнен)
person Sachin I    schedule 14.08.2018

Используйте поле billing_account_country вместо country_c, а также используйте account_id с account_name. Я считаю, что имя и идентификатор должны совпадать с одной и той же таблицей.

person ConRockets    schedule 17.07.2017