- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/lead.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\Lead
- Вызов: Lead::getQuery
public function getQuery($selectList = []) { $filter = Helper::getFilterByFields( self::getUiFilterFields(), $this->getFieldValues() ); $runtime = Helper::getRuntimeByEntity(null); $nameExprField = new Entity\ExpressionField( '`NAME`', 'CASE %2$s WHEN \'Y\' ' . 'THEN if (%3$s>0, %4$s, if (%5$s>0, %6$s, %1$s)) ELSE %1$s END', [ 'NAME', 'IS_RETURN_CUSTOMER', 'CONTACT_ID', 'CONTACT.NAME', 'COMPANY_ID', 'COMPANY.TITLE' ] ); $query = new Entity\Query(LeadTable::getEntity()); $query->setFilter($filter); $query->setSelect(array_merge($selectList, [ $nameExprField, 'CRM_ENTITY_ID' => 'ID', 'CRM_ENTITY_TYPE_ID', 'CRM_ENTITY_TYPE', 'CRM_CONTACT_ID' => 'CONTACT_ID', 'CRM_COMPANY_ID' => 'COMPANY_ID', ])); $query->registerRuntimeField(new Entity\ExpressionField('CRM_ENTITY_TYPE', '\''.\CCrmOwnerType::LeadName.'\'')); $query->registerRuntimeField(Helper::createExpressionMultiField( \CCrmOwnerType::LeadName, 'EMAIL' )); $query->registerRuntimeField(Helper::createExpressionMultiField( \CCrmOwnerType::LeadName, 'PHONE' )); $query->registerRuntimeField(new Entity\ExpressionField('CRM_ENTITY_TYPE_ID', \CCrmOwnerType::Lead)); $query->registerRuntimeField(null, new Entity\ReferenceField( 'CONTACT', "\\Bitrix\\Crm\\ContactTable", ['=this.CONTACT_ID' => 'ref.ID'], ['join_type' => 'LEFT'] )); $query->registerRuntimeField(null, new Entity\ReferenceField( 'COMPANY', "\\Bitrix\\Crm\\CompanyTable", ['=this.COMPANY_ID' => 'ref.ID'], ['join_type' => 'LEFT'] )); foreach ($runtime as $item) { $item = new Entity\ExpressionField( $item['name'], $item['expression'], $item['buildFrom'] ); $query->registerRuntimeField($item); } //echo "" . $query->getQuery(); die(); return $query; }