цену или просто редактирую его, однако выгрузка сбрасывает настройки:
AddEventHandler("catalog", "OnPriceAdd", "BXIBlockAfterSave");
AddEventHandler("catalog", "OnPriceUpdate", "BXIBlockAfterSave");
function BXIBlockAfterSave($ID,$arFields=array()){
//наценка => тип цены
$arExtraBind = array(
'1' => 3
);
$basePriceId = 254; //базовая цена id
//флаг события обновления элемента инфоблока (не добавления цены)
$flgElemUpd = false;
//ручное изменение цены (не по событию)
if(is_array($ID) && isset($ID['ID']) && !empty($ID['ID']) && empty($arFields)){
$arFields = $ID;
$ID = $arFields['ID'];
$PRODUCT_ID = (isset($arFields['ID']) && intval($arFields['ID']) > 0)?$arFields['ID']:((isset($arFields['PRODUCT_ID']) && intval($arFields['PRODUCT_ID']) > 0)?$arFields['PRODUCT_ID']:0);
$flgElemUpd = true;
}
$PRODUCT_ID = (isset($arFields['ID']) && intval($arFields['ID']) > 0)?$arFields['ID']:((isset($arFields['PRODUCT_ID']) && intval($arFields['PRODUCT_ID']) > 0)?$arFields['PRODUCT_ID']:0);
if($PRODUCT_ID){
if((isset($arFields['CATALOG_GROUP_ID']) && $arFields['CATALOG_GROUP_ID'] == $basePriceId) || $flgElemUpd){
//получаем цены у товара
$res = CPrice::GetList(array(),array("PRODUCT_ID" => $PRODUCT_ID));
$arPricesData = $basePriceData = array();
while($arPrices = $res->Fetch()){
$arPricesData[$arPrices['CATALOG_GROUP_ID']] = $arPrices;
if($arPrices['CATALOG_GROUP_ID'] == 254){
$basePriceData = $arPrices;
}
}
//Bitrix\Main\Diag\Debug::writeToFile(array($ID, $arFields, $arPricesData),"","LogBXIBlockAfterSavet.txt");
if(isset($basePriceData['PRICE']) && !empty($basePriceData['PRICE']) && count($arPricesData) > 0){
foreach($arExtraBind as $extraId => $priceTypeId){
$arFieldPrice = Array(
"PRODUCT_ID" => $PRODUCT_ID,
"EXTRA_ID" => $extraId,
"CATALOG_GROUP_ID" => $priceTypeId,
"PRICE" => $basePriceData['PRICE'],
"CURRENCY" => $basePriceData['CURRENCY']
);
if (is_array($arPricesData[$priceTypeId])) {
CPrice::Update($arPricesData[$priceTypeId]['ID'], $arFieldPrice, true);
} else {
CPrice::Add($arFieldPrice, true);
}
}
}
}
}
}
оригинальная статья: https://dev.1c-bitrix.ru/support/forum/forum6/topic102119/
if isset if isset if isset .... ААААА. Да научитесь пастебином что-ли пользоваться, как соль в глаза
это готовый тект из стати, я хотел проверить работает ли, но он не выполняет нужную функцию
секундочку, миллиард ифов это стандарты битрикс фрамеворк
Но не для сообщений в телеге
Я как то прогнал битриксовый код через сниффер, он сначала репу почесал, сказал, что это не соответствует стандартам, а потом как понял, что это битрикс, сказал, что "ааа, ну раз битрикс, значит можно"
слушай ну ок, но все же какое событие отвечает за выгрузку?(
Обсуждают сегодня