Назад

Обновление полей пользователя при сохранении заказа в Битрикс

Главная
Блог
Обновление полей пользователя при сохранении заказа в Битрикс

В этой статье разберем, как при сохранении заказа в Битрикс автоматически обновлять поля пользователя. Это полезно, например, когда нужно синхронизировать данные заказа с профилем покупателя.

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 можно гибко управлять данными пользователя при изменении заказа. Это удобно для автоматизации бизнес-процессов в интернет-магазине на Битрикс.

Читайте также:

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи