• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/correction.php
  • Класс: BitrixSaleHelpersAdminCorrection
  • Вызов: Correction::getFilterValues
static function getFilterValues(): array
{
	$newFilter = [];

	$filterFields = self::getFilterFields();
	$filterOption = new BitrixMainUIFilterOptions(self::TABLE_ID);
	$filterData = $filterOption->getFilter($filterFields);
	$filterable = array();
	$quickSearchKey = '';
	foreach ($filterFields as $filterField)
	{
		if (isset($filterField['quickSearch']))
		{
			$quickSearchKey = $filterField['quickSearch'].$filterField['id'];
		}
		$filterable[$filterField['id']] = $filterField['filterable'];
	}

	foreach ($filterData as $fieldId => $fieldValue)
	{
		if ((is_array($fieldValue) && empty($fieldValue)) || (is_string($fieldValue) && $fieldValue == ''))
		{
			continue;
		}

		if (mb_substr($fieldId, -5) === '_from')
		{
			$realFieldId = mb_substr($fieldId, 0, -5);
			if (!array_key_exists($realFieldId, $filterable))
			{
				continue;
			}
			if (mb_substr($realFieldId, -2) === '_1')
			{
				$newFilter[$realFieldId] = $fieldValue;
			}
			else
			{
				if (!empty($filterData[$realFieldId.'_numsel']) && $filterData[$realFieldId.'_numsel'] === 'more')
					$filterPrefix = '>';
				else
					$filterPrefix = '>=';
				$newFilter[$filterPrefix.$realFieldId] = trim($fieldValue);
			}
		}
		elseif (mb_substr($fieldId, -3) === '_to')
		{
			$realFieldId = mb_substr($fieldId, 0, -3);
			if (!array_key_exists($realFieldId, $filterable))
			{
				continue;
			}
			if (mb_substr($realFieldId, -2) === '_1')
			{
				$realFieldId = mb_substr($realFieldId, 0, -2);
				$newFilter[$realFieldId.'_2'] = $fieldValue;
			}
			else
			{
				if (!empty($filterData[$realFieldId.'_numsel']) && $filterData[$realFieldId.'_numsel'] === 'less')
				{
					$filterPrefix = '<';
				}
				else
				{
					$filterPrefix = '<=';
				}
				$newFilter[$filterPrefix.$realFieldId] = trim($fieldValue);
			}
		}
		else
		{
			if (array_key_exists($fieldId, $filterable))
			{
				$filterPrefix = $filterable[$fieldId];
				$newFilter[$filterPrefix.$fieldId] = $fieldValue;
			}
			if ($quickSearchKey && $fieldId === 'FIND' && trim($fieldValue))
			{
				$newFilter[$quickSearchKey] = $fieldValue;
			}
		}
	}

	return $newFilter;
}