цену или просто редактирую его, однако выгрузка сбрасывает настройки:
                  
                  
                  
                  
                  
                  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 .... ААААА. Да научитесь пастебином что-ли пользоваться, как соль в глаза
это готовый тект из стати, я хотел проверить работает ли, но он не выполняет нужную функцию
секундочку, миллиард ифов это стандарты битрикс фрамеворк
Но не для сообщений в телеге
Я как то прогнал битриксовый код через сниффер, он сначала репу почесал, сказал, что это не соответствует стандартам, а потом как понял, что это битрикс, сказал, что "ааа, ну раз битрикс, значит можно"
слушай ну ок, но все же какое событие отвечает за выгрузку?(
Обсуждают сегодня