• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/main/uiselector/crmorders.php
  • Класс: Bitrix\Crm\Integration\Main\UISelector\CrmOrders
  • Вызов: CrmOrders::getSearchFilter
protected function getSearchFilter(string $search, array $options)
{
	global $USER;

	$operation = Loader::includeModule('sale') ? '*' : '*%';

	$filter = [$operation . 'SEARCH_CONTENT' => CrmEntity::prepareToken($search)];

	if (!(is_object($USER) && $USER->isAdmin()))
	{
		$queryOptions = [
			'RAW_QUERY' => true,
			'PERMS'=> CCrmPerms::getCurrentUserPermissions()
		];

		$permissionSql = CCrmPerms::buildSql(
			static::getOwnerTypeName(),
			'',
			'READ',
			$queryOptions
		);

		if($permissionSql <> '')
		{
			$filter['@ID'] = new SqlExpression($permissionSql);
		}
	}

	$subFilter = [
		'%ORDER_TOPIC' => $search,
		'LOGIC' => 'OR'
	];

	if (is_numeric($search))
	{
		$subFilter['ID'] = (int)$search;
		$subFilter['%ACCOUNT_NUMBER'] = $search;
	}
	else if (preg_match('/( . *)\[(\d+?)\]/i' . BX_UTF_PCRE_MODIFIER, $search, $matches))
	{
		$subFilter['ID'] = (int)$matches[2];
		$subFilter['%ACCOUNT_NUMBER'] = trim($matches[1]);
	}
	else
	{
		$subFilter['%ACCOUNT_NUMBER'] = $search;
	}

	if (!empty($filter))
	{
		$filter[] = $subFilter;
	}

	return empty($filter) ? false : $this->prepareOptionalFilter($filter, $options);
}