[QUOTE]falcon_fraer написал:
Добрый день!!!
Знаю что тема 100500 лет как устарела но всеже! :
как прописать фильтр чтоб выборка производилать за месяц??
тоисть не по определенной дате, а например, с 01.08 по 31.08 ???[/QUOTE]
Мало ли кто ищет решение. Предлагаю такой хак, заводите у пользователя до поле [B]UF_BIRTHDAY[/B]. Далее ставим обработчик на изменение [B]PERSONAL_BIRTHDAY[/B]:
[URL=https://dev.1c-bitrix.ru/api_help/main/events/onbeforeuserupdate.php]https://dev.1c-bitrix.ru/api_help/main/events/onbeforeuserupdate.php[/URL]
[CODE]use Bitrix\Main\EventManager;
$eventManager = EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'main',
'OnBeforeUserUpdate',
['MyClassUserUpdate', 'OnBeforeUserUpdateHandler']
);
class MyClassUserUpdate
{
function OnBeforeUserUpdateHandler(&$arFields)
{
if(is_set($arFields, "PERSONAL_BIRTHDAY")) {
$date = new DateTime($arFields["PERSONAL_BIRTHDAY"]);
$ufBirthday = $date->format('d.m.1970'); //Формат
$arFields['UF_BIRTHDAY'] = $ufBirthday;
}
}
}[/CODE]И просто заносим в поле [B]UF_BIRTHDAY[/B] дату с заданным годом, например [B]1970[/B]. То есть в поле [B]UF_BRITHDAY[/B] будут все даты с одним годом. Готово, далее берём например код [URL=https://dev.1c-bitrix.ru/community/webdev/user/286733/]Игоря Долгополова[/URL], из комментария выше и получаем такую конструкцию:
[CODE]use \Bitrix\Main\UserTable as UTable;
use \Bitrix\Main\Type\DateTime as Dtime;
$rsUsers = UTable::getList(
[
"select" => ["ID", "PERSONAL_BIRTHDAY", "UF_BIRTHDAY"],
"filter" => [
"><UF_BIRTHDAY" => [
new DTime("24.09.1970","d.m.Y"),
new DTime("30.09.1970","d.m.Y")
]
]
]
);
while ($arUser = $rsUsers->fetch()) {
var_dump($arUser);
}
[/CODE]
Добрый день!!!
Знаю что тема 100500 лет как устарела но всеже! :
как прописать фильтр чтоб выборка производилать за месяц??
тоисть не по определенной дате, а например, с 01.08 по 31.08 ???[/QUOTE]
Мало ли кто ищет решение. Предлагаю такой хак, заводите у пользователя до поле [B]UF_BIRTHDAY[/B]. Далее ставим обработчик на изменение [B]PERSONAL_BIRTHDAY[/B]:
[URL=https://dev.1c-bitrix.ru/api_help/main/events/onbeforeuserupdate.php]https://dev.1c-bitrix.ru/api_help/main/events/onbeforeuserupdate.php[/URL]
[CODE]use Bitrix\Main\EventManager;
$eventManager = EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'main',
'OnBeforeUserUpdate',
['MyClassUserUpdate', 'OnBeforeUserUpdateHandler']
);
class MyClassUserUpdate
{
function OnBeforeUserUpdateHandler(&$arFields)
{
if(is_set($arFields, "PERSONAL_BIRTHDAY")) {
$date = new DateTime($arFields["PERSONAL_BIRTHDAY"]);
$ufBirthday = $date->format('d.m.1970'); //Формат
$arFields['UF_BIRTHDAY'] = $ufBirthday;
}
}
}[/CODE]И просто заносим в поле [B]UF_BIRTHDAY[/B] дату с заданным годом, например [B]1970[/B]. То есть в поле [B]UF_BRITHDAY[/B] будут все даты с одним годом. Готово, далее берём например код [URL=https://dev.1c-bitrix.ru/community/webdev/user/286733/]Игоря Долгополова[/URL], из комментария выше и получаем такую конструкцию:
[CODE]use \Bitrix\Main\UserTable as UTable;
use \Bitrix\Main\Type\DateTime as Dtime;
$rsUsers = UTable::getList(
[
"select" => ["ID", "PERSONAL_BIRTHDAY", "UF_BIRTHDAY"],
"filter" => [
"><UF_BIRTHDAY" => [
new DTime("24.09.1970","d.m.Y"),
new DTime("30.09.1970","d.m.Y")
]
]
]
);
while ($arUser = $rsUsers->fetch()) {
var_dump($arUser);
}
[/CODE]