Документация для разработчиков
Темная тема

Кастомизация фильтров

Для обеспечения кастомизации фильтров в списках элементов сущностей CRM инстанс класса \Bitrix\Crm\Filter\Factory был вынесен в Service\Container.

Как в предыдущих примерах необходимо подменить инстанс этого класса.

use Bitrix\Crm\Service;
use Bitrix\Main\DI;
use Bitrix\Crm\Filter;

$filterFactory = new class extends Filter\Factory {
    
};

DI\ServiceLocator::getInstance()->addInstance(
    'crm.filter.factory',
    $filterFactory
);

Например, есть необходимость модифицировать фильтр для списка сделок.

Для этого достаточно переопределить провайдера сделок и/или фильтр и реализовать там свою логику.

use Bitrix\Crm\Service;
use Bitrix\Crm\Filter;
use Bitrix\Main;

class MyFilterFactory extends Filter\Factory
{
    public function getDataProvider(Main\Filter\EntitySettings $settings): Main\Filter\DataProvider
    {
        if ($settings instanceof Filter\DealSettings)
        {
            return new class($settings) extends Filter\DealDataProvider
            {
                // some custom info about fields
            };
        }
        
        return parent::getDataProvider($settings);
    }
    
    public function createFilter(
		$ID,
		Main\Filter\DataProvider $entityDataProvider,
		array $extraDataProviders = null,
		array $params = null
	): Filter\Filter
	{
		if ($entityDataProvider instanceof Filter\DealDataProvider)
		{
		    return new class ($ID, $entityDataProvider, (array)$extraDataProviders, (array)$params) extends Filter\Filter {
		        // some custom logic
		    };
		}
		
		return parent::createFilter($ID, $entityDataProvider, (array)$extraDataProviders, (array)$params);
	}
}


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2023, «1С-Битрикс», 2023
Наверх