Posted 26 February В просмотре задачи у меня появляется вот такая ошибка. В файле 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
Posted 1 March '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
Posted 1 March Есть только в в \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
Posted 1 March А если по всему проекту поискать "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', ), ), ), ); ?> Тоесть еще раз: В описании сабпанели должно быть указание какие данные туда буду пихаться, при помощи get_subpanel_data - тут указывается переменная из vardefs (может быть указана как в самом модуле, так и в custom) В вардефе надо описать эту переменную, причем указать у нее тип - что это связь ну и где то должна быть описана эта связь Share this post Link to post Share on other sites
Posted 9 March В 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
Posted 18 March В 26.02.2016 at 16:24, Ptica сказал: Если его убрать, то ошибка пропадает, а заодно и появляется субпанель "Заметки". Пока обошелся этим. Share this post Link to post Share on other sites