Нужно было на одном из проектов, начать отсчет ID заказов (не номеров а именно ID)
с 10 000 (ох уж эти 1С ники).
После удаления заказов, даже всех, отсчет ID продолжается с последнего созданого.
Потому, просто создаем и сразу удаляем 10 000 заказов.
PS: Скрипт удалит все заказы. Если нужны те- которые созданы до запуска скрипта, доработайте цикл - на удаление именно созданного им заказа.
Вариант "в лоб" - поменять ID прямо в базе, меня не устраивал.
| Код |
|---|
Bitrix\Main\Loader::includeModule('sale');
Bitrix\Main\Loader::includeModule('catalog');
for ($i=0; $i<10000; $i++) { // ПОМЕНЯТЬ НА СВОЮ ЦИФРУ - если нужно больше/меньше заказов
$products = array(
array('PRODUCT_ID' => 1811, 'NAME' => 'Товар 1', 'PRICE' => 500, 'CURRENCY' => 'RUB', 'QUANTITY' => 5)
);
$basket = Bitrix\Sale\Basket::create(SITE_ID);
foreach ($products as $product) {
$item = $basket->createItem("catalog", $product["PRODUCT_ID"]);
unset($product["PRODUCT_ID"]);
$item->setFields($product);
}
$order = Bitrix\Sale\Order::create(SITE_ID, 1);
$order->setPersonTypeId(2);
$order->setBasket($basket);
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();
/** @var Sale\BasketItem $basketItem */
foreach ($basket as $basketItem) {
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
}
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
Bitrix\Sale\PaySystem\Manager::getObjectById(1)
);
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
$result = $order->save();
if (!$result->isSuccess()) {
//$result->getErrors();
}
}
// УДАЛЕНИЕ ВСЕХ ЗАКАЗОВ - можно перенести в цикл на создание и сразу удаление именно этого заказа
$orders = CSaleOrder::GetList(array("ID" => "DESC"), array(), false, false, array('ID'));
while ($order = $orders->Fetch()) {
$result = CSaleOrder::Delete($order['ID']);
}
|