Всем привет. Не пойму в чём дело. Есть функция, прописана в init.php:
Функция отлично работает при запуске из командной строки и не работает на агенте. В почту для отладки мне приходит 1 и 2, а вот 3 не приходит.
В чём тут может быть дело? Может ли ей не хватать системных прав? Или чего?
Спасибо.
UPDATE
Включил отладку и вот что увидел, очевидно, при попытке запуска агента:
Fatal error: Call to a member function IsAdmin() on a non-object in /var/www/fresharomat/bitrix/modules/catalog/mysql/price.php on line 139
Эт чё? Походу ему нужно писть price = new CPrice и т.д.? ща попробую
Код |
---|
function doSuperSale() { CModule::IncludeModule('iblock'); CModule::IncludeModule("catalog"); CModule::IncludeModule("sale"); $IBLOCK_ID = 6; $SECTION_ID = 431; $extra = 0.3; mail('ну мой мыл тут','1','1'); $arInfo = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_ID); mail('ну мой мыл тут','2','2'); $arSelect = Array("ID", "NAME", "SECTION_ID"); $arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y","SECTION_ID"=>$SECTION_ID,"INCLUDE_SUBSECTIONS" => 'Y'); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); $arPrice = CPrice::GetBasePrice($arFields["ID"]); CIBlockElement::SetPropertyValues($arFields["ID"], $IBLOCK_ID, $arPrice["PRICE"], 'OLD_PRICE'); $arPrice["PRICE"] += ($arPrice["PRICE"]*$extra); $arPrice["PRICE"] = (int)$arPrice["PRICE"]; CPrice::Update($arPrice["ID"], $arPrice); $rsOffers = CIBlockElement::GetList(array("ID", "NAME"),array('IBLOCK_ID' => $arInfo['IBLOCK_ID'], 'PROPERTY_'.$arInfo['SKU_PROPERTY_ID'] => $arFields["ID"])); while ($arOffer = $rsOffers->GetNext()) { $arOfferPrice = CPrice::GetBasePrice($arOffer["ID"]); CIBlockElement::SetPropertyValues($arOffer["ID"], $arInfo['IBLOCK_ID'], $arOfferPrice["PRICE"], 'OLD_PRICE'); $arOfferPrice["PRICE"] += ($arOfferPrice["PRICE"]*$extra); $arOfferPrice["PRICE"] = (int)$arOfferPrice["PRICE"]; CPrice::Update($arOfferPrice["ID"], $arOfferPrice); } } mail('ну мой мыл тут','3','3'); return "doSuperSale();"; } |
Функция отлично работает при запуске из командной строки и не работает на агенте. В почту для отладки мне приходит 1 и 2, а вот 3 не приходит.
В чём тут может быть дело? Может ли ей не хватать системных прав? Или чего?
Спасибо.
UPDATE
Включил отладку и вот что увидел, очевидно, при попытке запуска агента:
Fatal error: Call to a member function IsAdmin() on a non-object in /var/www/fresharomat/bitrix/modules/catalog/mysql/price.php on line 139
Эт чё? Походу ему нужно писть price = new CPrice и т.д.? ща попробую