В этой статье разберем, как при сохранении заказа в Битрикс автоматически обновлять поля пользователя. Это полезно, например, когда нужно синхронизировать данные заказа с профилем покупателя.
1. Обработчик события OnOrderSave
Для решения задачи используем событие OnOrderSave, которое срабатывает при обновлении заказа. Добавим обработчик в init.php:
AddEventHandler("sale", "OnOrderSave", "OrderMySave");
function OrderMySave($orderID, $fields, $orderFields) {
// Логика обработки данных
}2. Получение данных из свойств заказа
Внутри функции проверяем, заполнены ли нужные свойства заказа (например, ID 32 и 34):
$valText = false;
if ($orderFields['ORDER_PROP'][32]) {
$valText = $orderFields['ORDER_PROP'][32];
} elseif ($orderFields['ORDER_PROP'][34]) {
$valText = $orderFields['ORDER_PROP'][34];
}3. Обновление полей пользователя
Получаем ID пользователя из заказа и обновляем его данные через CUser::Update():
$userID = $fields['USER_ID'];
$user = new CUser;
$userFields = Array(
"UF_VED" => $valText, // Произвольное поле пользователя
"UF_ORDER_ID" => $orderID // ID последнего заказа
);
$user->Update($userID, $userFields);4. Полный код обработчика
AddEventHandler("sale", "OnOrderSave", "OrderMySave");
function OrderMySave($orderID, $fields, $orderFields) {
$valText = false;
if ($orderFields['ORDER_PROP'][32]) {
$valText = $orderFields['ORDER_PROP'][32];
} elseif ($orderFields['ORDER_PROP'][34]) {
$valText = $orderFields['ORDER_PROP'][34];
}
if ($valText && $fields['USER_ID']) {
$user = new CUser;
$userFields = Array(
"UF_VED" => $valText,
"UF_ORDER_ID" => $orderID
);
$user->Update($fields['USER_ID'], $userFields);
}
}Когда это может пригодиться?
-
Синхронизация данных – сохранение информации из заказа в профиль пользователя.
-
Автоматизация процессов – например, запись последнего номера заказа или специального статуса.
-
Интеграция с CRM – передача данных в пользовательские поля для дальнейшего использования.
Вывод
С помощью обработчика OnOrderSave можно гибко управлять данными пользователя при изменении заказа. Это удобно для автоматизации бизнес-процессов в интернет-магазине на Битрикс.
Читайте также: