• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/filter/filter.php
  • Класс: BitrixMainFilterFilter
  • Вызов: Filter::removeNotUiFilterFields
protected function removeNotUiFilterFields(array &$filter): void
{
	$filterFieldsIds = array_map(
		function(Field $filterField)
		{
			return $filterField->getId();
		},
		$this->getFields()
	);
	$sqlWhere = new CSQLWhere();

	foreach ($filter as $fieldId => $fieldValue)
	{
		if (in_array($fieldId, $this->uiFilterServiceFields, true))
		{
			continue;
		}
		if (in_array($fieldId, $filterFieldsIds, true))
		{
			continue;
		}

		$fieldIdWithoutOperation = $sqlWhere->makeOperation($fieldId)['FIELD'];
		if (in_array($fieldIdWithoutOperation, $filterFieldsIds, true))
		{
			continue;
		}

		foreach ($this->uiFilterPostfixes as $postfix)
		{
			$postfixLength = mb_strlen($postfix);
			if (mb_substr($fieldId, -$postfixLength) === $postfix)
			{
				$realFieldId = mb_substr($fieldId, 0, -$postfixLength);
				if (in_array($realFieldId, $filterFieldsIds, true))
				{
					continue(2);
				}
			}
		}
		unset($filter[$fieldId]); // not a valid filter field
	}
}