Россия

Добавление свойства товара в состав корзины методом OnBeforeBasketAdd


Задача: вывести свойство Код номенклатуры в корзине

Проблема: 
Добавление товара в корзину реализовано не стандартно, поэтому установка значений параметров, добавляемых в корзину для компоненты catalog не отрабатывает.
"PRODUCT_PROPERTIES" => array(
    0 => "KOD_NOMENKLATURY"
),


Вариант решения:

Добавляем  в init.php событие OnBeforeBasketAdd

AddEventHandler("sale", "OnBeforeBasketAdd", "OnBeforePresentToBasket");
function  OnBeforePresentToBasket(&$arFields)
{
   if(CModule::IncludeModule("iblock"))
   {
       $arFilter = array("IBLOCK_ID" => 1, 'ID' => $arFields['PRODUCT_ID']);
       $arSelect = array('IBLOCK_ID',"PROPERTY_KOD_NOMENKLATURY");
       $rsElement = CIBlockElement::GetList(array('SORT' => 'ASC'), $arFilter, false, false, $arSelect);
       if ($arElement = $rsElement->GetNext()) 
       {
           $arFields['PROPS'][] = array(
               'NAME'  => "Код номенклатуры",
               'CODE'  => "KOD_NOMENKLATURY",
               'VALUE' => $arElement["PROPERTY_KOD_NOMENKLATURY_VALUE"],
               'SORT'  => 0
           );
       }
   }
   return;
}


В результате, свойство KOD_NOMENKLATURY в состав заказа установилось и после оформления заказа видим его в админке.