Выгрузка свойств и других параметров заказа в Bitrix24

=this.Name}
Задать вопрос
При интеграции (выгрузке) заказов из интернет магазина в CRM Bitrix24 часто требуется передача произвольных параметров - это может быть свойство товаров, адрес доставки или способ оплаты и многое другое.

В современном ядре D7 Bitrix у модуля sale, есть обработчик событий: OnSaleOrderBeforeSaved, с помощью которого, можно корректировать информацию заказа. С его помощью, мы можем записывать в комментарий менеджера, нужные для нас поля, которые отобразятся в Битрикс24, в поле комментария к заказу.

В примере мы получим:
  • Адрес,
  • Свойство,
  • Способ оплаты,
  • Способ доставки.

Для этого в файле init.php пишем обработчик, который сохраняет адрес и поля в комментарий менеджера к заказу:

<?php
// Регистрируем обработчик методами D7
use Bitrix\Main;
use Bitrix\Sale;
Main\EventManager::getInstance()->addEventHandler(
	'sale',
	'OnSaleOrderBeforeSaved',
	'OnSaleComponentHandler'
);

function OnSaleComponentHandler(Main\Event $event)
{
	$order = $event->getParameter("ENTITY");
	// Получаем объект заказа
	$commentbitrix24 = "";

	$propertyCollection = $order->getPropertyCollection();
	// Свойства товара в корзине, коллекция объектов Sale\BasketPropertyItem

	$propertys = $propertyCollection->getArray();
	// Массив свойств ['properties' => [..], 'groups' => [..] ];

	// Получаем адрес пользователя
	$address = "Адрес:";
	foreach ($propertys["properties"] as $location)
	{
		if($location["CODE"] === "ADDRESS")
		{
			$address .= $location["VALUE"][0] . "<br>";
		}
		elseif($location["CODE"] === "STREET"
		|| $location["CODE"] === "HOUSE")
		{
			$address .= $location["VALUE"][0] . " ";
		}
	}
	$commentbitrix24 = $address;
	// Получаем дополнительные параметры,
	//которые необходимо поместить в комментарий менеджера

	$articles = "";
	$dbBasketItems = CSaleBasket::GetList(array(), 
	array("ORDER_ID"=>$order->getId()));
	// Выбираем записи из корзины, по id заказа

	while ($arItems = $dbBasketItems->Fetch())
	{
		// Выбираем необходимые свойства
		$db_props = CSaleBasket::GetPropsList(
		array(),
		array(
		"BASKET_ID"=>$arItems["ID"],
		"CODE"=>"FABRIC"    )
		);
		while ($item = $db_props->Fetch())
		{
			$articles = "<br/>Артикулы из обложки: " . $item["VALUE"];
		}
	}
	$commentbitrix24 .= $articles;
	// Получаем дополнительные параметры,
	//которые необходимо поместить в комментарий менеджера

	$sposob = "";
	$dbBasketItems = CSaleBasket::GetList(array(), 
	array("ORDER_ID"=>$order->getId()));
	// Выбираем записи из корзины, по id заказа
		$paymentCollection = $order->getPaymentCollection();
		foreach ($paymentCollection as $payment) {
			$psName = $payment->getPaymentSystemName(); // название платежной системы
			$sposob = "<br>&nbsp; Способ Оплаты- " . $psName;
		}
	$commentbitrix24 .= $sposob;
	// Получаем дополнительные параметры,
	//которые необходимо поместить в комментарий менеджера

	$dell = "";
	$shipmentCollection = $order->getShipmentCollection();
	foreach($shipmentCollection as $shipment)
	{
		$shipment_nameDirty = $shipment->getDeliveryName(); //тут мы уже получили имя доставки
		$pieces = explode("(", $shipment_nameDirty);
		$shipment_name = $pieces[0]; // а тут просто очистили от лишнего в скобочках
		$dell = "<br>&nbsp; Способ доставки- " . $shipment_name;
	}
	$commentbitrix24 .= $dell;
	// Получаем дополнительные параметры,
	//которые необходимо поместить в комментарий менеджера

	// Устанавливаем сформированный комментарий менеджера для заказа
	$order->setField("COMMENTS", $commentbitrix24);
}

?>
Итог мы получили всю необходимую информацию в поле комментарий к заказы (скрин в шапке статьи).
Заказать услугу
Оформите заявку, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

 
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Загрузить изображение