• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/internals/entitycompatibility.php
  • Класс: BitrixSaleCompatibleInternalsEntityCompatibility
  • Вызов: EntityCompatibility::setFilter
public function setFilter(array $filter = array())
{

	$aliasFields = static::getAliasFields();
	foreach($filter as $fieldName => $fieldValue)
	{
		$fieldName = ToUpper($fieldName);
		$filterMatch = $this->query->explodeFilterKey($fieldName);
		$fieldClearName = $filterMatch['alias'];

		if (!in_array($fieldClearName, $this->getQueryAliasList()))
		{
			if (isset($aliasFields[$fieldClearName]))
			{
				$this->addQueryAlias($fieldClearName, $aliasFields[$fieldClearName]);
			}
		}

		if ($propKey = $this->parseField($fieldClearName))
		{
			$this->addFilter($filterMatch['modifier'].$filterMatch['operator'].$propKey, $fieldValue);
		}
		else
		{
			if (!$this->checkWhiteListFields($fieldClearName))
			{
				continue;
			}

			$aliasFieldsValue = $aliasFields[$fieldClearName] ?? null;
			if (!is_array($aliasFieldsValue))
			{
				$this->addFilter($fieldName, $fieldValue);
			}
			else
			{
				$this->addFilterForAlias($aliasFieldsValue, $fieldName, $fieldValue);
				$this->addSelectForAlias($aliasFieldsValue);
			}
		}
	}
}