1С-Битрикс — это мощная система управления сайтом, которая предоставляет разработчикам множество возможностей для создания интернет-магазинов, корпоративных сайтов и других типов веб-платформ. Одной из ключевых функциональностей является процесс создания заказа в интернет-магазине, и в этой статье мы подробно рассмотрим, как это сделать с использованием ядра D7.

Этапы создания заказа
Процесс создания заказа можно разделить на несколько ключевых этапов:
- Создание и наполнение корзины товарами.
- Создание объекта заказа и привязка его к корзине.
- Настройка отгрузки (выбор службы доставки).
- Указание способа оплаты.
- Сохранение заказа.
Давайте подробнее разберем каждый этап и посмотрим, как реализовать его через код.
Этап 1: Наполнение корзины товарами
Перед тем как создать заказ, необходимо подготовить корзину с товарными позициями. В реальных проектах товары могут поступать из различных источников — например, из формы "Заказ в один клик" или из интерфейса магазина.
В нашем примере создадим массив с товарами для добавления в корзину:
$arItems = [
[
'PRODUCT_ID' => 121,
'NAME' => 'Аппарат плазменной резки АВРОРА Джет 40',
'PRICE' => 20500,
'CURRENCY' => 'RUB',
'QUANTITY' => 1
]
];
После того как товар выбран, можно создать корзину. Для этого необходимо использовать класс \Bitrix\Sale\Basket
, который позволяет управлять товарными позициями в корзине.
// Получаем текущий сайт
$siteId = Bitrix\Main\Context::getCurrent()->getSite();
// Создаем корзину для данного сайта
$basket = \Bitrix\Sale\Basket::create($siteId);
// Добавляем товары в корзину
foreach ($arItems as $arItem) {
$basketItem = $basket->createItem('catalog', $arItem['PRODUCT_ID']);
$basketItem->setFields($arItem);
}
В данном фрагменте создается объект корзины, и каждый товар из массива добавляется как элемент в корзину.
Этап 2: Создание заказа и привязка корзины
Для того чтобы создать заказ, нужно получить ID текущего пользователя. Мы можем использовать глобальный объект $USER
для получения этого значения.
// Получаем ID пользователя
$userId = $USER->GetID();
Теперь создадим заказ и привяжем к нему корзину с товарными позициями:
// Создаем заказ для пользователя
$order = \Bitrix\Sale\Order::create($siteId, $userId);
// Привязываем корзину к заказу
$order->setBasket($basket);
// Указываем тип плательщика (например, физическое лицо)
$order->setPersonTypeId(1); // 1 — физическое лицо
Здесь мы создаем новый объект заказа, привязываем к нему корзину с товарами и указываем тип плательщика (в нашем примере это физическое лицо).
Этап 3: Настройка отгрузки (служба доставки)
После того как заказ и корзина созданы, нужно настроить отгрузку — то есть указать, какой службой доставки будет отправлен товар. Для этого используем коллекцию отгрузок:
// Получаем коллекцию отгрузок
$shipmentCollection = $order->getShipmentCollection();
// Создаем новую отгрузку с выбранной службой доставки (ID службы доставки — 1)
$shipment = $shipmentCollection->createItem(
\Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
);
// Получаем коллекцию товаров в отгрузке
$shipmentItemCollection = $shipment->getShipmentItemCollection();
// Добавляем товары из корзины в отгрузку
foreach ($basket as $basketItem) {
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
}
Этот код создает отгрузку для заказа, выбирая службу доставки по ее ID (в нашем случае это служба с ID = 1). Затем товары из корзины добавляются в отгрузку с соответствующим количеством.
Этап 4: Указание способа оплаты
После настройки отгрузки нужно указать способ оплаты. В 1С-Битрикс для этого используется коллекция платежей.
// Получаем коллекцию платежей
$paymentCollection = $order->getPaymentCollection();
// Создаем новый платеж с выбранной платежной системой (ID платежной системы — 1)
$payment = $paymentCollection->createItem(
\Bitrix\Sale\PaySystem\Manager::getObjectById(1)
);
// Устанавливаем сумму и валюту
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
Этот код создает платеж с выбранной системой (по ID), устанавливает сумму платежа, которая равна стоимости заказа, и указывает валюту.
Этап 5: Сохранение заказа
После того как все данные для заказа, отгрузки и оплаты заданы, остается сохранить заказ в базе данных. В случае успешного сохранения возвращаем ID заказа, а в случае ошибки — возвращаем сообщение об ошибке.
// Сохраняем заказ и проверяем результат
$result = $order->save();
if ($result->isSuccess()) {
// Возвращаем ID заказа в случае успеха
return $order->getId();
} else {
// Возвращаем ошибку в случае неудачи
return $result->getError();
}
Если заказ успешно сохранен, его ID будет возвращен. В случае возникновения ошибок, будет возвращено сообщение об ошибке.
Заключение
Мы рассмотрели основные этапы создания заказа в 1С-Битрикс D7. Важно понимать, что создание заказа — это не просто добавление товаров в корзину, но и настройка многих важных параметров, таких как отгрузка, оплата и сохранение данных.