/home/bitrix/www/local/php_interface/init.php
<?php
define('CRM_USE_CUSTOM_SERVICES', true);
if (defined('CRM_USE_CUSTOM_SERVICES') && CRM_USE_CUSTOM_SERVICES === true)
{
$fileName = __DIR__ . '/include/crm_services.php';
if (file_exists($fileName))
{
require_once($fileName);
}
}
/home/bitrix/www/local/php_interface/include/crm_services.php
<?php
use Bitrix\Crm\Filter;
use Bitrix\Crm\Service\Container;
use Bitrix\Main;
use Bitrix\Main\Loader;
Loader::includeModule('crm');
use Bitrix\Main\DI\ServiceLocator;
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
{
public function prepareFields(): array
{
$fields = parent::prepareFields();
$fields['UF_CRM_1739979950267'] = $this->createField(
'UF_CRM_1739979950267',
[
'name' => 'Мое кастомное поле', // Название поля
'type' => 'list', // Тип поля (string, date, number, list и т.д.)
'default' => true, // Показывать поле по умолчанию
'partial' => true, // Разрешить частичный поиск
'data' => [
'additionalFilter' => [
'isEmpty',
'hasAnyValue',
],
],
]
);
return $fields;
}
public function prepareFieldData($fieldID): ?array
{
if ($fieldID === 'UF_CRM_1739979950267')
{
return [
'params' => ['multiple' => 'Y'],
'items' => [
'val1' => 'Вариант 1',
'val2' => 'Вариант 2',
],
];
}
return parent::prepareFieldData($fieldID);
}
};
}
return parent::getDataProvider($settings);
}
public function createFilter(
$ID,
Main\Filter\DataProvider $entityDataProvider,
array $extraDataProviders = null,
array $params = null
): Filter\Filter
{
return parent::createFilter($ID, $entityDataProvider, $extraDataProviders, $params);
}
}
$serviceLocator = ServiceLocator::getInstance();
$serviceLocator->addInstance('crm.filter.factory', new MyFilterFactory());
$container = Container::getInstance();
<?php
define('CRM_USE_CUSTOM_SERVICES', true);
if (defined('CRM_USE_CUSTOM_SERVICES') && CRM_USE_CUSTOM_SERVICES === true)
{
$fileName = __DIR__ . '/include/crm_services.php';
if (file_exists($fileName))
{
require_once($fileName);
}
}
/home/bitrix/www/local/php_interface/include/crm_services.php
<?php
use Bitrix\Crm\Filter;
use Bitrix\Crm\Service\Container;
use Bitrix\Main;
use Bitrix\Main\Loader;
Loader::includeModule('crm');
use Bitrix\Main\DI\ServiceLocator;
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
{
public function prepareFields(): array
{
$fields = parent::prepareFields();
$fields['UF_CRM_1739979950267'] = $this->createField(
'UF_CRM_1739979950267',
[
'name' => 'Мое кастомное поле', // Название поля
'type' => 'list', // Тип поля (string, date, number, list и т.д.)
'default' => true, // Показывать поле по умолчанию
'partial' => true, // Разрешить частичный поиск
'data' => [
'additionalFilter' => [
'isEmpty',
'hasAnyValue',
],
],
]
);
return $fields;
}
public function prepareFieldData($fieldID): ?array
{
if ($fieldID === 'UF_CRM_1739979950267')
{
return [
'params' => ['multiple' => 'Y'],
'items' => [
'val1' => 'Вариант 1',
'val2' => 'Вариант 2',
],
];
}
return parent::prepareFieldData($fieldID);
}
};
}
return parent::getDataProvider($settings);
}
public function createFilter(
$ID,
Main\Filter\DataProvider $entityDataProvider,
array $extraDataProviders = null,
array $params = null
): Filter\Filter
{
return parent::createFilter($ID, $entityDataProvider, $extraDataProviders, $params);
}
}
$serviceLocator = ServiceLocator::getInstance();
$serviceLocator->addInstance('crm.filter.factory', new MyFilterFactory());
$container = Container::getInstance();