Установить/скопировать значение свойства элемента из другого свойства, при создании или редактирования элемента инфоблока.
У нас есть свойство инфоблока с кодом ATT_PRICE
И есть свойство с кодом ATT_TEST
Задача: при редактировании элемента копировать значение из ATT_PRICE в ATT_TEST
Добавляем в init.php
Здесь: с помощью CIBlockElement::GetList получили значение свойства ATT_PRICE для элемента с ID = $arFields['ID'] (текущий редактируемый/добавляемый элемент)
С помощью CIBlockElement::SetPropertyValuesEx установили значение ATT_PRICE в ATT_TEST
У нас есть свойство инфоблока с кодом ATT_PRICE
И есть свойство с кодом ATT_TEST
Задача: при редактировании элемента копировать значение из ATT_PRICE в ATT_TEST
Добавляем в init.php
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockEl"); AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockEl"); function OnAfterIBlockEl(&$arFields) { if (CModule::IncludeModule("iblock")): $getProperty = CIBlockElement::GetList ( Array("ID" => "ASC"), Array("IBLOCK_ID" => $arFields['IBLOCK_ID'], "ID" => $arFields['ID']), false, false, Array( 'PROPERTY_ATT_PRICE' ) ); while($ar_fields = $getProperty->GetNext()) { $setProperty= $ar_fields['PROPERTY_ATT_PRICE_VALUE']; } endif; CIBlockElement::SetPropertyValuesEx ( $arFields['ID'],$arFields['IBLOCK_ID'],array ( 'ATT_TEST' => $setProperty ) ); } |
С помощью CIBlockElement::SetPropertyValuesEx установили значение ATT_PRICE в ATT_TEST
CIBlockElement::GetList на CIBlockElement::GetByID - будет работать бодрее и так правильнее
<?
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockEl");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockEl");
function OnAfterIBlockEl(&$arFields) {
if (CModule::IncludeModule("iblock")):
$res = CIBlockElement::GetByID($arFields['ID']);
if($obRes = $res->GetNextElement())
{
$ar_res = $obRes->GetProperty("ATT_PRICE");
$setProperty = $ar_res['VALUE'];
}
endif;
CIBlockElement::SetPropertyValuesEx (
$arFields['ID'],$arFields['IBLOCK_ID'],array (
'ATT_TEST' => $setProperty
)
);
}
?>