bitrix админка, новое поле в фильтр заказов

в массив $arFilterFields добавим св-во Создан (CREATED_BY)
$arFilterFields = array(
...
"filter_created_by",
Далее идет проверка этих полей. Для массива $arFilter, можно использовать маску
if(strlen($filter_created_by)>0) $arFilter["CREATED_BY"] = trim($filter_created_by);
здесь соответствие полей
$arColumn2Field = array(
"CREATED_BY" => array("CREATED_BY"),
этот массив содержит поля, к-е можно настроить при нажатии шестеренки
$arHeaders = array(
array("id"=>"CREATED_BY","content"=>'создан', "sort"=>""),
Этот массив отвечает за добавление нашего поля в выпадающее меню (кнопка +)
$arFilterFieldsTmp = array(
"filter_created_by" => "создан",
и наконец, вывод поля в админке. Порядок строки соответсвует порядку в $arFilterFields
$oFilter->Begin();
<tr>
...
</tr>
<tr>
<td>создан:</td>
<td>
<input type="text" name="filter_created_by" value="<?echo htmlspecialcharsbx($filter_created_by)?>" size="10">
</td>
</tr>
Данный способ не полный для кастомных свойств заказа. Чтобы его допилить под каст. свойства, надо вставить вот этот код в init.php
http://estrin.pw/bitrix-d7-snippets/s/admin-order-list-filter/
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale','OnSaleAdminOrderList','OnSaleAdminOrderList');
function OnSaleAdminOrderList(\Bitrix\Main\Event $event)
{
$getListParams = $event->getParameters();
$getListParams['runtime']['PROP_FILTER'] = array(
'data_type' => 'Bitrix\Sale\Internals\OrderPropsValueTable',
'reference' => array(
'ref.ORDER_ID' => 'this.ID',
),
'join_type' => 'inner'
);
if(isset($_GET['filter_campaign'])){
$getListParams['filter']['=PROP_FILTER.CODE'] = 'campaign'; // символьный код свойства заказа
$getListParams['filter']['=PROP_FILTER.VALUE'] = $_GET['filter_campaign']; // значение свойства заказа
}
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $getListParams);
return $result;
}
Leave a comment