• Модуль: 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;
}