Сделал скрипт, который должен удалять все заказы. Он, в принципе, работает, но как-то волшебно. Я легко получаю весь список заказов, но при попытке удалить в цикле - заказы удаляются, то 1, то 100, то 150, при этом сам скрипт не выполняется до конца (в конце у меня выводы списка удаленных ID заказов)... Грешил на статусы заказов, стал менять их перед удалением, но ситуация не поменялась. Версия битрикс 15.5, время выполнения скрипта 3 минуты (скрипт больше 30 секунд не отрабатывает, так что проблема не в этом). Подскажите, с чем связана ошибка и как это поправить, чтобы выполнить удаление за раз?
| Код |
|---|
$counterDeleted = 0;
$orders = CSaleOrder::GetList(array("ID" => "DESC"), array(), false, false, array('ID','PAYED','CANCELED','USER_LOGIN','STATUS_ID'));
while ($order = $orders->Fetch()) {
if ($order['CANCELED'] == 'N' || $order['PAYED'] == 'Y' || $order['STATUS_ID'] == 'Y') { CSaleOrder::Update($order['ID'], ['PAYED' => 'N', 'CANCELED' => 'Y', 'STATUS_ID' => 'N']);
CSaleOrder::Update($order['ID'], ['PAYED' => 'N', 'CANCELED' => 'Y', 'STATUS_ID' => 'N']);
}
$result = CSaleOrder::Delete($order['ID']);
if ($result) $counterDeleted++;
}
echo 'Заказов удалено: '.$counterDeleted; |