Как сделать выборку (фильтрацию) в Битриксе

Условия выборки

Маски фильтров
Примеры фильтров

Фильтрация по пользовательским свойствам типа «Дата»

При поиске по не встроенным полям (НЕ «начало активности», НЕ «конец активности») обязательно конвертировать дату в формат хранения YYYY-MM-DD HH:MI:SS (DateTime::format(‘Y-m-d H:i:s’)), например выбор записей не старше 31 дня:

Фильтрация по «началу» и «концу активности»

Наоборот, для полей «начало активности» и «конец активности» следует использовать формат DD.MM.YYYY HH:MI:SS (DateTime::format(‘d.m.Y H:i:s’)).

Фильтрация по дате создания

Выбрать записи не старше 31 дня:

Выбор новостей за день или за месяц

Если у новости ее датой является «начало активности», и нет продолжительности по времени, то есть «конец активности» несет смысл только снятия ее с публикации, то выбор новостей за день или месяц происходит так:

Выбор событий с интервалом

Допустим, событие (акция) имеет продолжительность, которую указываем в полях «начало активности» и «конец активности», без учета времени, только дата.

«Конец активности» в данном случае служит для указания конца интервала времени, а не снятия с публикации (хотя такое тоже возможно).

Тогда выбор текущего события выглядит так:

Быстрый выбор новостей в календарь за месяц из нескольких инфоблоков

Высокая скорость обеспечивается прямым обращением к базе данных. В качестве даты новости — поле «Начало активности».
$this-\>arParams[‘IBLOCK_ID’] — массив номеров инфоблоков

Если события в таком календаре имеют продолжительность, возможно узнать, активно ли событие активность в данный день. Перед $query вставить:

Модифицировать $query:

Таким образом в выборку попадут поля day_1, day_2, …, содержащие признак активности события в этот день (1).