Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Class 'CIBlockElement' not found in

00 голосов
5
Здравствуйте, есть код
Код
<?
AddEventHandler("sale", "OnOrderUpdate", "OnOrderAddHandler");
function OnOrderAddHandler(&$ID, &$arFields) {
   $dbItemsInOrder = CSaleBasket::GetList( array( "ID" => "ASC" ), array( "ORDER_ID" => intval($ID) ) );
   while( $arItems = $dbItemsInOrder->Fetch() )
      CIBlockElement::SetPropertyValueCode($arItems["PRODUCT_ID"], "status", array("VALUE"=>"6"));
}

AddEventHandler("sale", "OnSaleStatusOrder", "OnStatusChangeAddHandler");
function OnStatusChangeAddHandler(&$ID, &$val) {
   if($val == "F"){
      if(CModule::IncludeModule("iblock")){
         $dbItemsInOrder = CSaleBasket::GetList( array( "ID" => "ASC" ), array( "ORDER_ID" => intval($ID) ) );
         while( $arItems = $dbItemsInOrder->Fetch() )
            CIBlockElement::SetPropertyValueCode($arItems["PRODUCT_ID"], "status", array("VALUE"=>"5"));
      }
   }
}
?>


Первое событие OnOrderAddHandler выполняется без проблем, а OnStatusChangeAddHandler выдаёт ошибку Class 'CIBlockElement' not found in. При добавлении CModule::IncludeModule("iblock"), ситуация осталась преждней

В чём проблема? может кто-то сталкивался?
спросил 22 Окт, 13 от Noda (140 баллов)

5 Ответы

00 голосов
Попробуйте тот же код запустить в PHP командной строки админки. Параметры $ID, $val естественно задать левые.
ответил 18 Ноя, 13 от Tei (480 баллов)
00 голосов
Цитата
rosdizain пишет:
Первое событие OnOrderAddHandler выполняется без проблем, а OnStatusChangeAddHandler выдаёт ошибку Class 'CIBlockElement' not found in.

Уверены?
Попробуйте добавить подключение модуля инфоблоков и в обработчик события OnOrderUpdate
ответил 26 Фев, 14 от Ly (4,580 баллов)
00 голосов
попробуйте вместо CIBlockElement:: использовать
$cib = new CIBlockElement;
$cib->SetPropertyValueCode
ответил 18 Июнь, 14 от unik (2,560 баллов)
00 голосов
Если честно, то ничего не происходит, висит значок "Загрузка..." и больше ни каких действий
ответил 17 Окт, 14 от Noda (140 баллов)
00 голосов
Спасибо за попытку помочь, но видно на меня надвигающиеся праздники странно подействовали и я был жутко не внимателен, исправлением данной проблемы послужило добавление if(CModule::IncludeModule("iblock")){ в первую функцию

Код
function OnOrderAddHandler(&$ID, &$arFields) {
   $dbItemsInOrder = CSaleBasket::GetList( array( "ID" => "ASC" ), array( "ORDER_ID" => intval($ID) ) );
   if(CModule::IncludeModule("catalog") && CModule::IncludeModule("iblock")){
      while( $arItems = $dbItemsInOrder->Fetch() )
         CIBlockElement::SetPropertyValueCode($arItems["PRODUCT_ID"], "status", array("VALUE"=>"6"));
   }
}


после чего, всё заработало
ответил 16 Фев, 15 от Noda (140 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 23 Ноя, 13 от Kusuri (180 баллов)
0 голосов
5 ответов
0 голосов
1 ответ
0 голосов
4 ответов
спросил 26 Янв, 14 от Eoling (140 баллов)
0 голосов
5 ответов
спросил 18 Дек, 13 от KENY (100 баллов)