Битрикс – как добавить или обновить свойство в заказе

Если заказ уже создан, при помощи этой функции можно обновить свойства.

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

Данная функция работает с заказами, которые уже добавлены в базу и вы видите их в административном разделе.

<?
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, и использовать для различных событий.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Один коментар

Залишити коментар до Игорь Скасувати коментар