Ptica

Ошибка в CRM

    7 posts in this topic

    В просмотре задачи у меня появляется вот такая ошибка.

    Screenshot_1.png.58ef8ba74276b43126a393f

    В файле sugarcrm.log по этому поводу запись:

    [FATAL] Error running count query for Task List:  Query Failed: ( SELECT count(*) c FROM sugar_sms  INNER JOIN  tasks task_sugar_sms_rel ON sugar_sms.parent_id=task_suga_sms_rel.id AND task_sugar_sms_rel.deleted=0
     AND parent_type = 'Tasks'
     where ( sugar_sms.parent_id='706c9722-106c-d31b-02e1-56c583e34312') AND sugar_sms.deleted=0 ): MySQL error 1052: Column 'parent_type' in on clause is ambiguous

    Судя по всему это субпанель.  Нахожу файл \custom\Extension\modules\Tasks\Ext\Layoutdefs\_custom_usage_module.php отвечающий за вывод субпанели.

    Вот содержание файла:

    $layout_defs['Tasks']['subpanel_setup']['task_sugar_sms'] = array (
      'order' => 250,
      'module' => 'sugar_SMS',
      'subpanel_name' => 'default',
      'sort_order' => 'asc',
      'sort_by' => 'date_entered',
      'title_key' => 'LBL_SUGAR_SMS',
      'get_subpanel_data' => 'task_sugar_sms',
      'top_buttons' =>
      array (
           array('widget_class' => 'SubPanelSMSButton')
      ),
    );

    Если его убрать, то ошибка пропадает, а заодно и появляется субпанель "Заметки". Хочется понять в чем ошибка, где формируется запрос к БД.

     

     

    Share this post


    Link to post
    Share on other sites
    'get_subpanel_data' => 'task_sugar_sms',

    в vardef.php где то в модуле sugar_SMS должна быть определена связь с названием task_sugar_sms. там должно быть поле task_sugar_sms и оно должно ссылаться на relationship.

    что там имеется?

    Share this post


    Link to post
    Share on other sites

    Есть только в в \modules\sugar_SMS\vardefs.php 

    $dictionary['sugar_SMS'] = array(
       'table'=>'sugar_sms',
       'audited'=>true,
       'fields'=>array (
      'name' => 
      array (
        'required' => '1',
        'name' => 'name',
        'vname' => 'LBL_NAME',
        'type' => 'varchar',
        'massupdate' => 0,
        'comments' => '',
        'help' => '',
        'importable' => 'true',
        'duplicate_merge' => 'disabled',
        'duplicate_merge_dom_value' => '0',
        'audited' => 0,
        'reportable' => 1,
        'len' => '50',
      ),
      'type' => 
      array (
        'required' => '1',
        'name' => 'type',
        'vname' => 'LBL_TYPE',
        'type' => 'enum',
        'massupdate' => 0,
        'default' => 'outbound',
        'comments' => '',
        'help' => '',
        'importable' => 'true',
        'duplicate_merge' => 'disabled',
        'duplicate_merge_dom_value' => '0',
        'audited' => 0,
        'reportable' => 1,
        'len' => 100,
        'options' => 'type_list',
        'studio' => 'visible',
        'dependency' => false,
      ),
      'phone_number' => 
      array (
        'required' => '1',
        'name' => 'phone_number',
        'vname' => 'LBL_PHONE_NUMBER',
        'type' => 'varchar',
        'massupdate' => 0,
        'comments' => '',
        'help' => '',
        'importable' => 'true',
        'duplicate_merge' => 'disabled',
        'duplicate_merge_dom_value' => '0',
        'audited' => 0,
        'reportable' => 1,
        'len' => '25',
      ),
      'description' => 
      array (
        'required' => '1',
        'name' => 'description',
        'vname' => 'LBL_DESCRIPTION',
        'type' => 'text',
        'massupdate' => 0,
        'comments' => '',
        'help' => '',
        'importable' => 'true',
        'duplicate_merge' => 'disabled',
        'duplicate_merge_dom_value' => '0',
        'audited' => 0,
        'reportable' => 1,
        'studio' => 'visible',
      ),
      'api_message' => 
      array (
        'required' => false,
        'name' => 'api_message',
        'vname' => 'LBL_API_MESSAGE',
        'type' => 'varchar',
        'massupdate' => 0,
        'comments' => '',
        'help' => '',
        'importable' => 'true',
        'duplicate_merge' => 'disabled',
        'duplicate_merge_dom_value' => '0',
        'audited' => 0,
        'reportable' => 1,
        'len' => '255',
      ),
       'provider' => 
       array (
          'required' => '1',
          'name' => 'provider',
          'vname' => 'LBL_PROVIDER',
          'type' => 'varchar',
          'massupdate' => 0,
          'comments' => '',
          'help' => '',
          'importable' => 'true',
          'duplicate_merge' => 'disabled',
          'duplicate_merge_dom_value' => '0',
          'audited' => 0,
          'reportable' => 1,
          'len' => '255',
       ),
       'delivery_status' => 
       array ( 
          'required' => '1',
          'name' => 'delivery_status',
          'vname' => 'LBL_DELIVERY_STATUS',
          'type' => 'enum',
          'massupdate' => 0,
          'default' => '',
          'comments' => '',
          'help' => '',
          'importable' => 'true',
          'duplicate_merge' => 'disabled',
          'duplicate_merge_dom_value' => '0',
          'audited' => 0,
          'reportable' => 1,
          'len' => 100,
          'options' => 'delivery_status_list',
          'studio' => 'visible',
          'dependency' => false,   
       ),
       'parent_type'=>
       array(
          'name'=>'parent_type',
          'vname'=>'LBL_PARENT_TYPE',
          'type' => 'parent_type',
          'dbType'=>'varchar',
          'required'=>false,
          'group'=>'parent_name',
          'options'=> 'sugar_sms_module_selected_list',
          'reportable'=>true,
          'len'=>255,
          'comment' => 'The Sugar object to which the call is related'
       ), 
       'parent_name'=>
       array(
          'name'=> 'parent_name',
          'parent_type'=>'record_type_display' ,
          'type_name'=>'parent_type',
          'id_name'=>'parent_id',
            'vname'=>'LBL_LIST_RELATED_TO',
          'type'=>'parent',
          'group'=>'parent_name',
          'source'=>'non-db',
          'options'=> 'sugar_sms_module_selected_list',
       ),
       'parent_id'=>
       array(
          'name'=>'parent_id',
          'vname'=>'LBL_LIST_RELATED_TO_ID',
          'type'=>'id',
          'group'=>'parent_name',
          'reportable'=>true,
          'comment' => 'The ID of the parent Sugar object identified by parent_type',
       ),
       
       ),
       'relationships'=>array ( ),
       'optimistic_lock'=>true,
    );
    if (!class_exists('VardefManager')){
            require_once('include/SugarObjects/VardefManager.php');
    } 
    VardefManager::createVardef('sugar_SMS','sugar_SMS', array('basic','assignable'));

     

    В \custom\Extension\modules\sugar_SMS\Ext\Vardefs\_custom_usage_module_vardefs.php

     

    $dictionary['sugar_SMS']['fields']['realty_sugar_sms'] = array (
                               'name' => 'realty_sugar_sms',
                               'type' => 'link',
                               'relationship' => 'realty_sugar_sms',
                               'source'=>'non-db',
                               'vname'=>'LBL_SUGAR_SMS',
                         );

    Share this post


    Link to post
    Share on other sites

    А если по всему проекту поискать "task_sugar_sms"?

    Это работает примерно так:

    в переменной $layout_defs['Accounts']['subpanel_setup'] указывается ссылка на переменную, описанную в $dictionary["Account"]["fields"]

     

    $layout_defs['Accounts']['subpanel_setup']['account_use'] = array(
                'order'                     => 500,
                'module'                    => 'zp_ComdiWAC',
                'subpanel_name'             => 'default',
                'get_subpanel_data'         => 'accounts_zp_comdiwac',
                'title_key'                 => 'LBL_ACCOUNT_USE_SUBPANEL_TITLE',
                'top_buttons'               => array(),
                'customFrame'               => array(
                    'height' => '2400px',
                    'src' => 'index.php?module=Accounts&action=showChartAccountsUse',
                ),
    
    );

     

    видишь, тут 'get_subpanel_data' => 'accounts_zp_comdiwac',

    ищем описание такого поля:

     

    $dictionary["Account"]["fields"]["accounts_zp_comdiwac"] = array (
      'name' => 'accounts_zp_comdiwac',
      'type' => 'link',
      'relationship' => 'accounts_zp_comdiwac',
      'source' => 'non-db',
    );

    тут в переменной идет указание того, что переменная является связью. и имя ей accounts_zp_comdiwac

    у меня в примере она одноименная, может иметь и совсем другое имя. ищем описание этой связи:

    custom/metadata/accounts_zp_comdiwacMetaData.php

    // created: 2013-05-23 13:48:39
    $dictionary["accounts_zp_comdiwac"] = array (
      'true_relationship_type' => 'one-to-many',
      'relationships' => 
      array (
        'accounts_zp_comdiwac' => 
        array (
          'lhs_module' => 'Accounts',
          'lhs_table' => 'accounts',
          'lhs_key' => 'id',
          'rhs_module' => 'zp_ComdiWAC',
          'rhs_table' => 'zp_comdiwac',
          'rhs_key' => 'id',
          'relationship_type' => 'many-to-many',
          'join_table' => 'accounts_zp_comdiwac_c',
          'join_key_lhs' => 'accounts_ze95eccounts_ida',
          'join_key_rhs' => 'accounts_zf497omdiwac_idb',
        ),
      ),
      'table' => 'accounts_zp_comdiwac_c',
      'fields' => 
      array (
        0 => 
        array (
          'name' => 'id',
          'type' => 'varchar',
          'len' => 36,
        ),
        1 => 
        array (
          'name' => 'date_modified',
          'type' => 'datetime',
        ),
        2 => 
        array (
          'name' => 'deleted',
          'type' => 'bool',
          'len' => '1',
          'default' => '0',
          'required' => true,
        ),
        3 => 
        array (
          'name' => 'accounts_ze95eccounts_ida',
          'type' => 'varchar',
          'len' => 36,
        ),
        4 => 
        array (
          'name' => 'accounts_zf497omdiwac_idb',
          'type' => 'varchar',
          'len' => 36,
        ),
      ),
      'indices' => 
      array (
        0 => 
        array (
          'name' => 'accounts_zp_comdiwacspk',
          'type' => 'primary',
          'fields' => 
          array (
            0 => 'id',
          ),
        ),
        1 => 
        array (
          'name' => 'accounts_zp_comdiwac_ida1',
          'type' => 'index',
          'fields' => 
          array (
            0 => 'accounts_ze95eccounts_ida',
          ),
        ),
        2 => 
        array (
          'name' => 'accounts_zp_comdiwac_alt',
          'type' => 'alternate_key',
          'fields' => 
          array (
            0 => 'accounts_zf497omdiwac_idb',
          ),
        ),
      ),
    );
    ?>
    Тоесть еще раз:
    1. В описании сабпанели должно быть указание какие данные туда буду пихаться, при помощи get_subpanel_data  - тут указывается переменная из vardefs (может быть указана как в самом модуле, так и в custom)
    2. В вардефе надо описать эту переменную, причем указать у нее тип - что это связь
    3. ну и где то должна быть описана эта связь

     

     

    Share this post


    Link to post
    Share on other sites

     

    В 01.03.2016 at 18:19, Ptica сказал:

    В \custom\Extension\modules\sugar_SMS\Ext\Vardefs\_custom_usage_module_vardefs.php

     

    
    $dictionary['sugar_SMS']['fields']['realty_sugar_sms'] = array (
                               'name' => 'realty_sugar_sms',
                               'type' => 'link',
                               'relationship' => 'realty_sugar_sms',
                               'source'=>'non-db',
                               'vname'=>'LBL_SUGAR_SMS',
                         );

    Разве не это?

    Если да, то в \skoya\custom\metadata\sugartalk_SMS_tasks.php: 

     

    $dictionary['task_sugar_sms'] =  array(
                           'relationships' => array (
                            'task_sugar_sms' => 
                            array (
                            'lhs_module'=> 'Tasks', 
                            'lhs_table'=> 'tasks', 
                            'lhs_key' => 'id',
                            'rhs_module'=> 'sugar_SMS', 
                            'rhs_table'=> 'sugar_sms', 
                            'rhs_key' => 'parent_id',
                            'relationship_type'=>'one-to-many', 
                            'relationship_role_column'=>'parent_type',
                            'relationship_role_column_value'=>'Tasks',
                               ),
                              ),
                            'fields' => '',
                           'indices' => '',
                           'table' => '',                        
                         );

     

    И в 

    Share this post


    Link to post
    Share on other sites

    Тут еще актуально? Или починил?

    Share this post


    Link to post
    Share on other sites
    В 26.02.2016 at 16:24, Ptica сказал:

    Если его убрать, то ошибка пропадает, а заодно и появляется субпанель "Заметки".

    Пока обошелся этим.

    Share this post


    Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!


    Register a new account

    Sign in

    Already have an account? Sign in here.


    Sign In Now