@roman_vo

Как отфильтровать реквизиты по дате?

Подскажите, хочу получить реквизиты созданные определенным пользователем в определенный день

function findRequisiteDel()
{
    $entityRequisite = new \Bitrix\Crm\EntityRequisite;
    $rsRequisite = $entityRequisite->getList([
        "select" => array("*"),
        "filter" => array(
            "CREATED_BY_ID" => 394,
            '>=DATE_CREATE' => '2022-09-28',
            '<=DATE_CREATE' => '2022-09-30'
        ),
        "order" => array("SORT" => "asc", "ID" => "desc")

    ]);
    return $rsRequisite->fetchAll();
}
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
В целом у меня получился такой же код за исключением пары небольших дополнений:
1. EntityRequisite довольно объемный класс (хранит достаточное количество переменных) и гонять его туда-сюда смысла особого нет, проще использовать существующий инстанс если он есть. Например если на странице не обращались к нему, то он и так будет создан, а если какая-то работа с ним велась то будет использован существующий экземпляр.
2. В select поле звезда означает не "все" поля, а "все явные поля", т.е. если нужно выбрать действительно все поля то нужно дополнять поиск еще и "UF_*" чтобы выбрать действительно все.
3. Лучше воспользоваться статической функцией createFromTimestamp на DateTime классе и передать туда strtotime - таким образом вы не будете зависеть от формата даты портала/пользователя.

use \Bitrix\Main,
	\Bitrix\Crm;

Main\Loader::requireModule('crm');

$entityRequisite = Crm\EntityRequisite::getSingleInstance();

$requisiteList = $entityRequisite->getList([
	'select' => ['*', 'UF_*'],
	'filter' => [
		'=CREATED_BY_ID' => 1,
		'><DATE_CREATE'  => [
			Main\Type\DateTime::createFromTimestamp( strtotime("28.09.2022 00:00:00") ),
			Main\Type\DateTime::createFromTimestamp( strtotime("01.10.2022 00:00:00") )
		]
	],
]);

foreach ($requisiteList as $requisite)
{
	var_dump($requisite);
}


P.S. Если вы делаете функцию под удаление, то смысла в самой функции нет, т.е. вы спокойно можете в этом же цикле определить нужен ли вам этот реквизит и удалить его если хотите.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы