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

Your email address will not be published.


*