- Модуль: 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;
}