Добрый день
Пытаюсь сделать так, чтобы значения длины, ширины и высоты не перезаписывались (в дальнейшем это использовать при обмене с 1С)
Сделала обработку события:
[CODE]$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(
'catalog',
'Bitrix\Catalog\Model\Product::OnBeforeUpdate',
static function ( $event ) {
$result = new \Bitrix\Main\ORM\EventResult;
$eventParams = $event->getParameters();
// ЛОГ ----------------------------------------------------
$logStr = "\n\n".date("Y-m-d H:i:s")."\t\t{$eventParams['id']}\tfields: ".serialize($eventParams['fields']);
file_put_contents(dirname(__FILE__) . "/product_before_update.log", $logStr, FILE_APPEND);
// --- ЛОГ ------------------------------------------------
$unsetFields = array('WIDTH', 'HEIGHT', 'LENGTH');
foreach($unsetFields as $fName) {
$result->unsetField( $fName );
}
return $result;
}
);[/CODE]
Пробовала использовать функцию $result->unsetFields( $unsetFields ); , а также вариант, как выше - где сбрасывается значение одного поля unsetField - но в любом случае при изменении параметров для торгового предложения в админке - изменения проходят, а по идее значения полей не должны перезаписываться.
В лог информация пишется, это значит, что событие срабатывает.
Что я делаю не так?
Пытаюсь сделать так, чтобы значения длины, ширины и высоты не перезаписывались (в дальнейшем это использовать при обмене с 1С)
Сделала обработку события:
[CODE]$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(
'catalog',
'Bitrix\Catalog\Model\Product::OnBeforeUpdate',
static function ( $event ) {
$result = new \Bitrix\Main\ORM\EventResult;
$eventParams = $event->getParameters();
// ЛОГ ----------------------------------------------------
$logStr = "\n\n".date("Y-m-d H:i:s")."\t\t{$eventParams['id']}\tfields: ".serialize($eventParams['fields']);
file_put_contents(dirname(__FILE__) . "/product_before_update.log", $logStr, FILE_APPEND);
// --- ЛОГ ------------------------------------------------
$unsetFields = array('WIDTH', 'HEIGHT', 'LENGTH');
foreach($unsetFields as $fName) {
$result->unsetField( $fName );
}
return $result;
}
);[/CODE]
Пробовала использовать функцию $result->unsetFields( $unsetFields ); , а также вариант, как выше - где сбрасывается значение одного поля unsetField - но в любом случае при изменении параметров для торгового предложения в админке - изменения проходят, а по идее значения полей не должны перезаписываться.
В лог информация пишется, это значит, что событие срабатывает.
Что я делаю не так?