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

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

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

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

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

<?
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 = "";
	$sposob = "";
	$dell = "";
	$Sale_items = "";	
	
	
	
	foreach ($propertys["properties"] as $location)
	{
		if($location["CODE"] === "address")
		{
			$address .= $location["VALUE"][0] . "<br>";
		}
		elseif($location["CODE"] === "city" || $location["CODE"] === "2zip" || $location["CODE"] === "KOMS")
		{
			if($location["CODE"] === "KOMS"){
			$address .= "Комментарий- " . $location["VALUE"][0] . ".<br>";
			}else{
				$address .= $location["VALUE"][0] . "<br>";
			}
		}
	}

	// Выбираем записи из корзины, по id заказа
		// название платежной системы
		$paymentCollection = $order->getPaymentCollection();
		foreach ($paymentCollection as $payment) {
			$psName = $payment->getPaymentSystemName(); 
			$sposob = "<br>&nbsp; Способ Оплаты- " . $psName;
		}
		// имя доставки		
		$shipmentCollection = $order->getShipmentCollection();
		foreach($shipmentCollection as $shipment)
		{
			$shipment_nameDirty = $shipment->getDeliveryName(); 
			$pieces = explode("(", $shipment_nameDirty);
			$shipment_name = $pieces[0]; // а тут просто очистили от лишнего в скобочках
			$dell = "&nbsp; Способ доставки- " . $shipment_name;
		}
	// товар со скидкой
		
	$dbBasketItems = $order->getBasket();
	foreach ($dbBasketItems as $basketItem) {
		if ($basketItem->getField('DISCOUNT_PRICE') > 0){
			$Sale_items .= "товар ".$basketItem->getField("NAME")." куплен со скидкой в  ".$basketItem->getField('DISCOUNT_PRICE')." руб.";
		}
	}

		$commentbitrix24 = $address;
		$commentbitrix24 .= $sposob;
		$commentbitrix24 .= $dell;
		$commentbitrix24 .= $Sale_items;
		// Устанавливаем сформированный комментарий менеджера
	$order->setField("COMMENTS", $commentbitrix24);
}
?>
Итог мы получили всю необходимую информацию в поле комментарий к заказы (скрин в шапке статьи).
Заказать услугу
Оформите заявку, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

Статьи про 1С-Битрикс

Для поиска товаров по артикулу, в 1С-Битрикс через компонент поиск по заголовкам ( bitrix:search.title ) , необходимо..
Подробнее

Переход 1C-Bitrix на PHP 7 позволяет получить примерно двухкратный прирост скорости работы сайта и небольшую экономию памяти.

Подробнее

Анастасия
Здравствуйте, можно ли заказать услугу по настройке передаче параметров в B24?!
ИмяЦитировать0
Guest
Цитата
Анастасия пишет:
Здравствуйте, можно ли заказать услугу по настройке передаче параметров в B24?!
Добрый вечер, Анастасия!
Оставьте заявку на обратный звонок и мы Вам перезвоним!
ИмяЦитировать0
Комментировать