...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_report_helper.php
- Класс: \CCrmLeadReportHelper
- Вызов: CCrmLeadReportHelper::beforeViewDataQuery
static function beforeViewDataQuery(&$select, &$filter, &$group, &$order, &$limit, &$options, &$runtime = null) { parent::beforeViewDataQuery($select, $filter, $group, $order, $limit, $options, $runtime); if(!isset($select['CRM_LEAD_COMPANY_BY_ID'])) { foreach($select as $k => $v) { if(mb_strpos($k, 'CRM_LEAD_COMPANY_BY_') === 0) { $select['CRM_LEAD_COMPANY_BY_ID'] = 'COMPANY_BY.ID'; break; } } } // HACK: Switch to order by STAGE_BY.SORT instead STAGE_BY.STATUS_ID // We are trying to adhere user defined sort rules. if(isset($order['STATUS_ID'])) { $select['CRM_LEAD_STATUS_BY_SORT'] = 'STATUS_BY.SORT'; $order['CRM_LEAD_STATUS_BY_SORT'] = $order['STATUS_ID']; unset($order['STATUS_ID']); } if(!isset($select['CRM_LEAD_CONTACT_BY_ID'])) { foreach($select as $k => $v) { if(mb_strpos($k, 'CRM_LEAD_CONTACT_BY_') === 0) { $select['CRM_LEAD_CONTACT_BY_ID'] = 'CONTACT_BY.ID'; break; } } } if(!isset($select['CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_ID'])) { foreach($select as $k => $v) { if(mb_strpos($k, 'CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_') === 0) { $select['CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_ID'] = 'ProductRow:LEAD_OWNER.IBLOCK_ELEMENT.ID'; $select['CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_IBLOCK_ID'] = 'ProductRow:LEAD_OWNER.IBLOCK_ELEMENT.IBLOCK_ID'; break; } } } // permission $addClause = CCrmLead::BuildPermSql('crm_lead'); if($addClause === false) { // access dinied $filter = array($filter, '=ID' => '0'); } elseif(!empty($addClause)) { global $DB; // HACK: add escape chars for ORM $addClause = str_replace('crm_lead.ID', $DB->escL.'crm_lead'.$DB->escR.'.ID', $addClause); $filter = array($filter, '=IS_ALLOWED' => '1' ); $runtime['IS_ALLOWED'] = array( 'data_type' => 'integer', 'expression' => array('CASE WHEN '.$addClause.' THEN 1 ELSE 0 END') ); } }