Если заказ уже создан, при помощи этой функции можно обновить свойства.
Обновление свойств заказа в Битриксе
Данная функция работает с заказами, которые уже добавлены в базу и вы видите их в административном разделе.
<? function AddOrderProperty($prop_id, $value, $order) { if (!strlen($prop_id)) { return false; } if (CModule::IncludeModule('sale')) { if ($arOrderProps = CSaleOrderProps::GetByID($prop_id)) { $db_vals = CSaleOrderPropsValue::GetList(array(), array('ORDER_ID' => $order, 'ORDER_PROPS_ID' => $arOrderProps['ID'])); if ($arVals = $db_vals->Fetch()) { return CSaleOrderPropsValue::Update($arVals['ID'], array( 'NAME' => $arVals['NAME'], 'CODE' => $arVals['CODE'], 'ORDER_PROPS_ID' => $arVals['ORDER_PROPS_ID'], 'ORDER_ID' => $arVals['ORDER_ID'], 'VALUE' => $value, )); } else { return CSaleOrderPropsValue::Add(array( 'NAME' => $arOrderProps['NAME'], 'CODE' => $arOrderProps['CODE'], 'ORDER_PROPS_ID' => $arOrderProps['ID'], 'ORDER_ID' => $order, 'VALUE' => $value, )); } } } }?>
Для вызова данной функции, используем 2 параметра – id заказа и id свойства.
$orderId = 3668; $orderPropId = 22; AddOrderProperty($orderPropId, '', $orderId);
но этот вариант подойдет для редких случаев, когда вы хотите удалить значение.
Т.к. второй параметр у нас отвечает за “значение”, то перезаписать свойство заказа можно так:
AddOrderProperty(22, 'test', $orderId);
Эту функцию можно использовать в init.php, и использовать для различных событий.
Спасибо, пригодилось.