Может кому пригодится, решил так:
\Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleStatusOrderChange', ['Handler', 'OnSaleStatusOrderChange']);
class Handler {
function OnSaleStatusOrderChange($event)
{
$parameters = $event->getParameters();
if ($parameters['VALUE'] === 'P')
{
/** @var \Bitrix\Sale\Order $order */
$order = $parameters['ENTITY'];
$userID = $order->getField("USER_ID"); // получаем ID пользователя
$orderPrice = $order->getField("PRICE"); // получаем сумму заказа
//получаем пользовательское поле для записи
global $USER;
$filter = Array("ID" => $userID, "ACTIVE"=> "Y");
$arParams["SELECT"] = array( "UF_BONUS_SUM");
$rsUsers = CUser::GetList(($by="personal_phone"), ($order="desc"), $filter, $arParams);
while ($arUser = $rsUsers->Fetch()) {
$oldSum = $arUser["UF_BONUS_SUM"];
}
$bonusSum = $oldSum + $orderPrice; // сумма заказа + сумма, которая уже записана в пользовательское поле
$user = new CUser;
$fields = Array(
"UF_BONUS_SUM" => $bonusSum,
);
$user->Update($userID, $fields); // обновляем поле
//Bitrix\Main\Diag\Debug::writeToFile(array($order ),"","/log_new.txt");
}
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS
);
}
}