В init есть данный код. При событии OnAfterIBlockElementUpdate все передается и работает, а вот при OnAfterIBlockElementAdd данные со складов пустые
| Код |
|---|
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/logs/".date("d-m-Y").".txt");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("ElementTehno", "addSort"));
class ElementTehno
{
//Чтобы у нас не было 504 ошибки необходимо прописать этот код, он не дает зациклится нашему скрипту
public static $disableHandler = false;
// Меняем сортировка и активность в зависимости от наличия на складах
public function sort_price($ID, $STORE_AMOUNT_1, $STORE_AMOUNT_2, $STORE_AMOUNT_4, $DETAIL_PICTURE){
if($STORE_AMOUNT_1 == 0 and $STORE_AMOUNT_2 == 0 and $STORE_AMOUNT_4 == 0){
$arSort["SORT"] = "1500";
} elseif ($STORE_AMOUNT_1 > 0 or $STORE_AMOUNT_2 > 0){
$arSort["SORT"] = "500";
} elseif($STORE_AMOUNT_4 > 0){
$arSort["SORT"] = "1000";
}
if(isset($arSort)){
$price = CPrice::GetBasePrice($ID);
if($price["PRICE"] == 0){
$arSort["ACTIVE"] = 'N';
} elseif($price["PRICE"] >0 and isset($DETAIL_PICTURE)){
$arSort["ACTIVE"] = 'Y';
}
return $arSort;
}
}
function addSort(&$arFields){
if($arFields["ID"]> 0 && $arFields["IBLOCK_ID"] == "26"){
$addProps = CIBlockElement::GetList(
Array("ID" => "ASC"),
Array("IBLOCK_ID" => 26, "ID" => $arFields["ID"]),
false,
false,
Array(
'ID', 'PURCHASING_CURRENCY', 'PRICE_1', 'CURRENCY_1', 'PURCHASING_PRICE', 'PROPERTY_MERLION_CODE', 'STORE_AMOUNT_1', 'STORE_AMOUNT_2', 'STORE_AMOUNT_4', 'DETAIL_PICTURE'
)
);
self::$disableHandler = true;
if($ar_fields = $addProps->GetNext())
{
$ElementUpdate = ElementTehno::sort_price($ar_fields["ID"], $ar_fields["STORE_AMOUNT_1"], $ar_fields["STORE_AMOUNT_2"], $ar_fields["STORE_AMOUNT_4"], $ar_fields["DETAIL_PICTURE"]);
if(isset($ElementUpdate)){
$ibp = new CIBlockElement();
$res = $ibp->Update($arFields["ID"], $ElementUpdate);
if($res){
AddMessage2Log("При добавлении позиции ".$ar_fields["ID"]." была изменена сортировка или активность", "Tehno");
}
}
}
}
}
} |

