Нужно было на одном из проектов, начать отсчет 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']); } |