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

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

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

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

<?
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 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *