В современном ядре 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> Способ Оплаты- " . $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> Способ доставки- " . $shipment_name; } $commentbitrix24 .= $dell; // Получаем дополнительные параметры, //которые необходимо поместить в комментарий менеджера // Устанавливаем сформированный комментарий менеджера для заказа $order->setField("COMMENTS", $commentbitrix24); } ?>Итог мы получили всю необходимую информацию в поле комментарий к заказы (скрин в шапке статьи).