• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/client.php
  • Класс: Bitrix\Sender\Integration\Crm\Connectors\Client
  • Вызов: Client::getCrmEntityFilter
protected function getCrmEntityFilter($entityTypeName, $isReferenced = false)
{
	if ($this->crmEntityFilter === null)
	{
		$this->crmEntityFilter = Helper::getFilterByEntity(
			self::getUiFilterFields(),
			$this->getFieldValues(),
			array_keys(self::getCrmDocumentTypes())
		);
	}

	if (isset($this->crmEntityFilter[$entityTypeName]))
	{
		$filter = $this->crmEntityFilter[$entityTypeName];
	}
	else
	{
		$filter = array();
	}

	if ($isReferenced && count($filter) === 0)
	{
		return $filter;
	}

	$commonNames = ['ASSIGNED_BY_ID', 'EMAIL', 'PHONE', 'NAME'];
	if ($isReferenced)
	{
		$commonNames = ['ASSIGNED_BY_ID'];
	}
	foreach ($commonNames as $commonName)
	{
		$value = $this->getFieldValue($commonName);
		if (!$value)
		{
			continue;
		}

		if (in_array($commonName, ['EMAIL', 'PHONE', 'NAME']))
		{
			$commonName = "%$entityTypeName.$commonName";
		}
		else
		{
			$commonName = "=$entityTypeName.$commonName";
		}
		$filter[$commonName] = $value;
	}

	if ($isReferenced)
	{
		return $filter;
	}

	foreach ($filter as $key => $value)
	{
		$pattern = "/^([\W]{0,2})$entityTypeName\./";
		if (!preg_match($pattern, $key))
		{
			continue;
		}

		unset($filter[$key]);
		$key = preg_replace($pattern, '$1', $key);
		$filter[$key] = $value;
	}

	return $filter;
}