• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/helper.php
  • Класс: Bitrix\Sender\Integration\Crm\Connectors\Helper
  • Вызов: Helper::getFilterByEntity
static function getFilterByEntity(array $fields = array(), array $values = array(), array $entityTypeNames = array())
{
	$map = array();
	foreach ($entityTypeNames as $entityTypeName)
	{
		$map[$entityTypeName] = array($entityTypeName);
	}
	$map['CLIENT'] = array(\CCrmOwnerType::CompanyName, \CCrmOwnerType::ContactName);
	$map[\CCrmOwnerType::CompanyName] = array(\CCrmOwnerType::CompanyName);
	$map[\CCrmOwnerType::ContactName] = array(\CCrmOwnerType::ContactName);

	$result = array();
	foreach ($fields as $field)
	{
		if (!self::isFieldFilterable($field, $values))
		{
			continue;
		}

		$id = $field['id'];
		foreach ($map as $prefix => $entityTypes)
		{
			$search = $prefix . '_';
			if (mb_strpos($id, $search) !== 0)
			{
				continue;
			}

			foreach ($entityTypes as $entityTypeName)
			{
				$filterKey = "$entityTypeName.".mb_substr($id, mb_strlen($search));
				if (!self::isFieldTypeFilter($field['type']))
				{
					$filterKey = "=$filterKey";
				}
				if ($field['multiple_uf'] ?? false)
				{
					$filterKey .= "_SINGLE";
				}

				$field['sender_segment_filter'] = $filterKey;
				if (!isset($result[$entityTypeName]))
				{
					$result[$entityTypeName] = array();
				}

				$result[$entityTypeName][] = $field;
			}

			break;
		}
	}

	self::$runtimeByEntity = [];
	foreach ($result as $entityTypeName => $fields)
	{
		$items = self::getFilterByFields($fields, $values, $entityTypeName);

		$result[$entityTypeName] = $items;
	}

	return $result;
}