| габариты из 1С выгружаются не в каталожные параметры товара, а в свойства SHIRINA_1, GLUBINA_1, VYSOTA_1. обработчик заполняет параметры товара |
init.php
use Bitrix\Main,
Bitrix\Main\Loader,
Bitrix\Main\EventManager;
//autoload class
Loader::registerAutoLoadClasses(null, array(
"Prop2ParamTK" => "/php_interface/prop2ParamTK.php"
));
$eventManager = EventManager::getInstance();
$eventManager->addEventHandler('catalog',
'\Bitrix\Catalog\Product::OnBeforeUpdate',
["Prop2ParamTK", "dimentions"]); |
/php_interface/prop2ParamTK.php
проверить коды свойств у вас SHIRINA_1, GLUBINA_1, VYSOTA_1 - заменить на свои
class Prop2ParamTK{
/**
* Перенести из свойств товара в параметры торгового каталога
*
*/
function dimentions($event){
if (1 || isset($_GET['type'], $_GET['mode']) && $_GET['type'] === 'catalog' && $_GET['mode'] === 'import') {
// данное условие оставлено, если модификацию будет необходимо использовать только при обмене с 1С
$id = $event->getParameter('primary')['ID'];
$arFields = $event->getParameter('fields');
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "PROPERTY_*");
$arFilter = Array("IBLOCK_ID"=>10, "ID" => $id);
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
if($ob = $res->GetNextElement()) $arProps = $ob->GetProperties();
$arFields["WIDTH"] = $arProps["SHIRINA_1"]["VALUE"];
$arFields["LENGTH"] = $arProps["GLUBINA_1"]["VALUE"];
$arFields["HEIGHT"] = $arProps["VYSOTA_1"]["VALUE"];
/**
* Установим полученные значения
*/
$result = new \Bitrix\Main\ORM\EventResult;
$result->modifyFields($arFields);
return $result;
}
}
} |