Не получается создать наследник класса UserTable и использовать его для фильтрации по пользовательским полям UF_.
В список классов подгружаемых автоматически через init.php добавляю такой
Необходимо фильтровать по UF_CATEGORY_ID
У Битриксовых юзеров соответственно добавлено пользовательское поле UF_CATEGORY_ID
При попытки добавить это свойство для фильтрации в параметры метода GetList выдает ошибку
Fatal error: Class '\SKIDKA\Entity\UtsSkidkaUserTable' not found inC:\OpenServer\OpenServer\domains\dev.skidka\bitrix\modules\main\lib\entity\base.php on line 140
В список классов подгружаемых автоматически через init.php добавляю такой
| Код |
|---|
class SkidkaUserTable extends Main\UserTable
{
public static function getMap()
{
$result = parent::getMap();
$result = array_merge($result, array(
'UF_CATEGORY_ID' => array(
'data_type' => 'string',
'title' => 'Привязка к категориям'
)
));
return $result;
}
public static function GetList($arParams = array()){
if (isset($arParams['arNavParams'])) {
$arPagerParams = array();
$obCDBResult = new \CDBResult();
$arNavParams = $arParams['arNavParams'];
unset($arParams['arNavParams']);
if ($arNavParams['nPageSize']) {
$arPagerTmp = $obCDBResult->GetNavParams($arNavParams);
$obPagerQuery = new \Bitrix\Main\Entity\Query(__CLASS__);
$obPagerQuery->SetSelect(array('ID'));
if ($arParams['filter']) {
$obPagerQuery->SetFilter($arParams['filter']);
}
if ($arParams['group']) {
$obPagerQuery->SetGroup($arParams['group']);
}
$dbItems = $obPagerQuery->Exec();
$arPagerParams['NavPageSize'] = intval($arNavParams['nPageSize']);
$arPagerParams['NavPageSize'] = $arPagerParams['NavPageSize'] > 0 ? $arPagerParams['NavPageSize'] : 10;
$arPagerParams['NavRecordCount'] = $dbItems->GetSelectedRowsCount();
$arPagerParams['NavPageNomer'] = $arPagerTmp['PAGEN'];
$arPagerParams['NavPageCount'] = ceil($arPagerParams['NavRecordCount'] / $arPagerParams['NavPageSize']);
$arParams['limit'] = $arPagerParams['NavPageSize'];
$arParams['offset'] = ($arPagerParams['NavPageNomer'] - 1) * $arPagerParams['NavPageSize'];
} elseif ($arNavParams['nTopCount']) {
$arParams['limit'] = intval($arNavParams['nTopCount']);
$arParams['limit'] = $arParams['limit'] > 0 ? $arParams['limit'] : 10;
}
}
$obResult = parent::GetList($arParams);
if ($arPagerParams) {
$obResult->bNavStart = false;
$obResult->NavRecordCount = $arPagerParams['NavRecordCount'];
$obResult->NavPageCount = $arPagerParams['NavPageCount'];
$obResult->NavPageNomer = $arPagerParams['NavPageNomer'];
$obResult->NextPageNomer = (($bpn = $obResult->NavPageNomer + 1) <= $obResult->NavPageCount) ? $bpn : false;
$obResult->PrevPageNomer = (($ppn = $obResult->NavPageNomer - 1) > 0) ? $ppn : false;
}
return $obResult;
}
} |
У Битриксовых юзеров соответственно добавлено пользовательское поле UF_CATEGORY_ID
При попытки добавить это свойство для фильтрации в параметры метода GetList выдает ошибку
Fatal error: Class '\SKIDKA\Entity\UtsSkidkaUserTable' not found inC:\OpenServer\OpenServer\domains\dev.skidka\bitrix\modules\main\lib\entity\base.php on line 140