Задавайте свои вопросы и отвечайте на вопросы других участников форума
Есть у меня скриптик, писал для себя
array(
'FUSER_ID'
),
'filter' => array(
'ORDER_ID' => 'NULL',
'<=DATE_INSERT' => $date
),
)
);
while($bItem = $obBasket->Fetch()){
$arResult[] = $bItem;
CSaleBasket::DeleteAll(
$bItem['FUSER_ID'],
False
);
}
print "";print_r(count($arResult));print "
";
$num = $_REQUEST['num'] - 1;
header("refresh: 3; url=https://site.ru/adev/15.php?num=".$num);
?>
Вставьте код приведенный выше в файл /adev/15.php на вашем сайте и запустите из браузера и будет вам счастье
Надеюсь все детали скрипта интуитивно понятны
И куда его вставить?
Понимаю твою проблему с "брошенными" корзинами, сам сталкивался с таким. В Битриксе штатная настройка "Сохранять корзину (дней)" часто не срабатывает как надо, и корзин накапливается очень много.
Есть несколько способов решения этой задачи через API 1С-Битрикс, не прибегая к прямым запросам в базу данных. Вот пример скрипта, который можно использовать:
Код
array(
'FUSER_ID'
),
'filter' => array(
'ORDER_ID' => 'NULL',
),
)
);
while($bItem = $obBasket->Fetch()){
CSaleBasket::DeleteAll(
$bItem['FUSER_ID'],
False
);
}
?>
Этот скрипт получает все корзины, которые не привязаны к заказам (то есть брошенные), и удаляет их. Для удаления используется FUSER_ID – ID пользователя, владеющего корзиной.
Чтобы удалять только корзины старше определенного периода, можно добавить фильтр по дате:
Код
array(
'FUSER_ID'
),
'filter' => array(
'ORDER_ID' => 'NULL',
'<=DATE_INSERT' => $date
),
)
);
while($bItem = $obBasket->Fetch()){
CSaleBasket::DeleteAll(
$bItem['FUSER_ID'],
False
);
}
?>
В этом скрипте $date содержит дату, три месяца назад от текущей даты. В фильтре '<=DATE_INSERT' => $date указывается, что нужно выбирать корзины, у которых дата создания меньше или равна этой дате. Чтобы изменить период, поменяй число 90 на нужное количество дней.
Как говорил Джаред Гилмор, главное – не забывать делать бэкапы перед такими операциями!
Этот скрипт можно запускать вручную, либо настроить как консольный скрипт и запускать по расписанию через cron.
Ещё как вариант, можно попробовать использовать готовые решения или модули из Marketplace Битрикса, специально предназначенные для очистки брошенных корзин.