Только что разбирался с этим методом, во-первых хорошо бы подавать ему на вход все поля (это не очень сложно, если выводилась форма редактирвоания, то все эти данные уже выбирались из базы):
$arField = array(
"USER_PROPS_ID" => $arr["USER_PROPS_ID"],
"ORDER_PROPS_ID" => $arr["ORDER_PROPS_ID"],
"NAME" => $field["NAME"],
"VALUE" => $_REQUEST["ORDER_PROP_".$k]
);
$res = CSaleOrderUserPropsValue::Update($arr["ID"] , $arField);
И во вторых не путать что мы передаем в $arr["ID"]это должен быть именно идентификатор значения свойства профиля полдьзователя, а не идентификатор профиля. Очень рекомендую открыть рядом консоль и следить за тем что обновляется.
/bitrix/admin/sql.php
Запрос вида:
SELECT * FROM b_sale_user_props_value WHERE USER_PROPS_ID = ВАШ_ИД_ПРОФИЛЯ;
Все обновляется, удачи
P.S: Понятно, что тема давно устарела, но часто ищешь на форуме решение, проблема описана твоя, а решения нет, может кому и пригодится
