Как делать выборку по фильтру по свойству date на новом ядре D7 1C-Битрикс?

Здравствуйте! Есть таблица, где у каждого элемента задано НАЧАЛО АКТИВНОСТИ и ОКОНЧАНИЕ АКТИВНОСТИ, необходимо при добавлении нового элемента, проверить, есть ли пересечение активных элементов. То есть в таблице уже есть элемент с 21.05.2015 по 25.05.2015, перед созданием элемента с периодом активности 23.05.2015-30.05.2015, нужно найти что есть пересечение.
$data = ['from' => '23.05.2015', 'to' => '30.05.2015'];
$arFilter = [">=ACTIVE_FROM" => $data['from'], "<=ACTIVE_TO" => $data['to']]; // не находит
$arFilter = [">=ACTIVE_FROM" => new \Bitrix\Main\Type\Date($data['from']), "<=ACTIVE_TO" => new \Bitrix\Main\Type\Date($data['to'])]; // не находит

Как фильтровать по дате?
  • Вопрос задан
  • 3134 просмотра
Пригласить эксперта
Ответы на вопрос 2
@pomidoroshev
Если используется таблица в Highload-блоке, то фильтрация не работает из-за пропущенного префикса UF_ у названия поля.
Ответ написан
filosofer
@filosofer
Developer (php - senior)
Вот, решение:
$arFilter = []; // скорее всего он уже будет заполнен, чем то
$arFilter[] = [
    'LOGIC' => 'OR',
    '>=ACTIVE_TO' => new \Bitrix\Main\Type\DateTime(),
    'ACTIVE_TO' => null,
];
$arFilter[] = [
    'LOGIC' => 'OR',
    '<=ACTIVE_FROM' => new \Bitrix\Main\Type\DateTime(),
    'ACTIVE_FROM' => null,
];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы