Добрый день
Пытаюсь сделать так, чтобы значения длины, ширины и высоты не перезаписывались (в дальнейшем это использовать при обмене с 1С)
Сделала обработку события:
Пробовала использовать функцию $result->unsetFields( $unsetFields ); , а также вариант, как выше - где сбрасывается значение одного поля unsetField - но в любом случае при изменении параметров для торгового предложения в админке - изменения проходят, а по идее значения полей не должны перезаписываться.
В лог информация пишется, это значит, что событие срабатывает.
Что я делаю не так?
Пытаюсь сделать так, чтобы значения длины, ширины и высоты не перезаписывались (в дальнейшем это использовать при обмене с 1С)
Сделала обработку события:
Код |
---|
$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; } ); |
Пробовала использовать функцию $result->unsetFields( $unsetFields ); , а также вариант, как выше - где сбрасывается значение одного поля unsetField - но в любом случае при изменении параметров для торгового предложения в админке - изменения проходят, а по идее значения полей не должны перезаписываться.
В лог информация пишется, это значит, что событие срабатывает.
Что я делаю не так?