Поля заказа в Битрикс (D7): как получить и изменить значения
Поля заказа в Битрикс — это данные о покупке: сумма, статус, доставка и оплата. В ядре D7 с ними работают через объект Order и его методы. В статье разобрано, как получить объект заказа, прочитать поля и свойства и сохранить изменения.
Содержание
- Что такое поля и свойства заказа в Битрикс
- Как получить объект заказа
- Основные поля заказа и методы получения
- Как получить значения свойств заказа
- Как изменить поле или свойство заказа
- Как получить корзину заказа
- Данные покупателя и платёжной системы
- Статусы заказа: оплата, доставка, отмена
- Группы свойств заказа
- Пример: вывод данных заказа
- Где применяют работу с полями заказа
- Частые ошибки при работе с полями заказа
- Частые вопросы о полях заказа
Разберём работу с полями заказа по порядку. Материал рассчитан на разработчика на 1С-Битрикс, который работает с заказами в ядре D7.
Что такое поля и свойства заказа в Битрикс
Поля заказа — это системные данные о покупке. Свойства заказа — это дополнительные значения, например телефон или адрес покупателя. В Битрикс эти данные хранятся отдельно.
Различие между полями и свойствами важно понимать.
- поля заказа получают методом getField;
- свойства заказа получают через getPropertyCollection;
- поля хранят сумму, статус, валюту и даты;
- свойства хранят данные покупателя и доставки;
- оба типа данных можно изменить и сохранить.
Поля относятся к самому объекту заказа. Свойства привязаны к коллекции свойств заказа. Поэтому методы работы с ними отличаются. Важно не путать эти два понятия.
Как получить объект заказа
Сначала нужно получить объект заказа по его ID. Для этого в D7 используют класс Order и метод load. Можно загрузить заказ по номеру через loadByAccountNumber.
use Bitrix\Sale\Order;
$order = Order::load($orderId);
// или по номеру заказа
$order = Order::loadByAccountNumber($orderNumber);
После загрузки объект заказа готов к работе. Через него получают поля, свойства и корзину заказа. Все методы вызывают у объекта order напрямую.
Основные поля заказа и методы получения
У объекта заказа есть готовые методы для полей. Они возвращают сумму, валюту и другие данные. Таблица показывает основные методы получения полей.
| Метод | Что возвращает |
|---|---|
| getId | идентификатор заказа (ID) |
| getPrice | сумму заказа |
| getCurrency | валюту заказа |
| getUserId | ID пользователя |
| getSumPaid | оплаченную сумму |
| getDateInsert | дату создания заказа |
Каждый метод возвращает одно значение поля. Например, getPrice вернёт сумму заказа. А getUserId покажет ID покупателя. Эти методы вызывают напрямую у объекта order.
Как получить значения свойств заказа
Свойства заказа хранятся в отдельной коллекции. Сначала получают коллекцию свойств через getPropertyCollection. Затем берут нужное свойство по его ID.
$propertyCollection = $order->getPropertyCollection();
$propItem = $propertyCollection
->getItemByOrderPropertyId($propertyId);
$value = $propItem->getValue();
Метод getValue возвращает значение свойства. Так получают телефон, адрес или комментарий покупателя. Каждое свойство заказа имеет свой уникальный ID.
Как изменить поле или свойство заказа
Поля и свойства заказа можно изменить. Для полей используют метод setField. Для свойств — метод setValue.
$order->setField(‘PRICE’, 1000);
$propItem->setValue(‘Новое значение’);
$order->save();
После изменения данные нужно сохранить. Для этого вызывают метод save у заказа. Без сохранения изменения не запишутся в базу.
Важно! Все изменения фиксируются только после вызова save. Если забыть сохранить заказ, данные не обновятся.
Как получить корзину заказа
Корзина хранит все товары заказа. Её получают через объект заказа методом getBasket. Затем перебирают товары корзины в цикле.
$basket = $order->getBasket();
foreach ($basket as $item) {
$name = $item->getField(‘NAME’);
$quantity = $item->getQuantity();
}
Метод getBasket возвращает корзину заказа. В цикле получают каждый товар корзины. Так читают название и количество товара. Корзина связана с объектом order напрямую.
Данные покупателя и платёжной системы
Заказ хранит данные покупателя и платёжной системы. Их получают через поля и коллекции объекта order. Это нужно для обработки заказа.
Основные данные заказа перечислены ниже.
- ID пользователя — метод getUserId;
- email покупателя — из свойств заказа;
- платёжная система — из коллекции оплат;
- статус оплаты — метод isPaid;
- комментарий покупателя — из свойств заказа.
Эти данные помогают обработать заказ. Например, отправить письмо покупателю на email. Или проверить платёжную систему перед отгрузкой. Данные пользователя берут из свойств заказа.
Статусы заказа: оплата, доставка, отмена
Объект заказа хранит статусы оплаты и доставки. Их проверяют специальными методами. Таблица показывает основные методы статусов.
| Метод | Что показывает |
|---|---|
| isPaid | оплачен ли заказ |
| isAllowDelivery | разрешена ли доставка |
| isShipped | отгружен ли заказ |
| isCanceled | отменён ли заказ |
Эти методы возвращают значение true или false. Например, isPaid покажет, оплачен ли заказ. Так удобно проверять текущий статус заказа.
Группы свойств заказа
Свойства заказа объединяются в группы. Группа собирает связанные свойства вместе. Это удобно для вывода данных покупателя.
Получить группы свойств можно через коллекцию.
- вызовите getPropertyCollection у заказа;
- получите группы методом getGroups;
- переберите свойства каждой группы;
- прочитайте значение каждого свойства.
Так выводят все свойства заказа по группам. Это помогает показать данные покупателя в удобном и читаемом виде.
Пример: вывод данных заказа
Соберём простой пример вывода данных заказа. Он показывает основные методы объекта order. Сначала заказ загружают по его ID.
$order = Order::load($orderId);
echo $order->getId();
echo $order->getPrice();
echo $order->getCurrency();
$collection = $order->getPropertyCollection();
Пример показывает, как получить поля заказа. Сначала загружаем объект order по ID. Затем выводим идентификатор, сумму и валюту заказа. После этого получаем коллекцию свойств заказа.
Где применяют работу с полями заказа
Работа с полями заказа нужна для доработок Битрикс. Её применяют в обработчиках событий и компонентах. Везде обращаются к объекту order.
Основные сценарии использования перечислены ниже.
- кастомные обработчики событий заказа;
- доработка страницы оформления заказа;
- интеграция с внешними системами и 1С;
- отправка данных пользователя в CRM;
- вывод комментария покупателя в письме.
Во всех случаях используют методы объекта order. Это стандартный способ работы с заказом в D7. Так разработчик получает данные пользователя и комментарий заказа.
Частые ошибки при работе с полями заказа
Разработчики часто допускают типичные ошибки. Их полезно знать заранее. Это ускоряет работу с заказом.
- изменение поля без вызова метода save;
- обращение к свойству по неверному ID;
- путаница между полями и свойствами заказа;
- изменение суммы заказа напрямую в базе;
- отсутствие проверки статуса перед изменением.
Большинство ошибок легко избежать. Достаточно работать через методы объекта заказа и сохранять изменения. Тогда данные заказа останутся корректными.
Итоги
Работа с полями заказа в Битрикс строится на объекте Order в ядре D7. Сначала заказ загружают, затем читают поля и свойства. Изменения сохраняют методом save. Такой подход делает код надёжным и понятным.
- Что такое поля и свойства заказа в Битрикс
- Как получить объект заказа
- Основные поля заказа и методы получения
- Как получить значения свойств заказа
- Как изменить поле или свойство заказа
- Как получить корзину заказа
- Данные покупателя и платёжной системы
- Статусы заказа: оплата, доставка, отмена
- Группы свойств заказа
- Пример: вывод данных заказа
- Где применяют работу с полями заказа
- Частые ошибки при работе с полями заказа
- Итоги