Пример скрипта применения наценок на товары каталога

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Позволю себе привести несколько прилизанный вариант скрипта Михаила Гущина. Добавил вывод сообщений об ошибках и пересчёт цен (CPrice::Update(..., true),  CPrice:: Add (..., true)).
Код
if(CModule::IncludeModule("iblock") && CModule::IncludeModule("catalog")) {
   echo "Скрипт запущен...<br />";

   $newExtraId = 1; // ID нашей наценки
   $newPriceId = 2; // ID типа цены, для которого задаём эту наценку
   $catalogIblockType = "products"; // код типа инфоблока, для которого проводим обработку

   $count = 0;
   $rsProducts = CCatalogProduct::GetList(
      array("ID" => "ASC"),
      array("IBLOCK_TYPE" => $catalogIblockType),
      false,
      false
   );
   while (($arProduct = $rsProducts->Fetch())/* && $count < 10*/) {
      $arPriceFields = Array(
         "PRODUCT_ID" => $arProduct["ID"],
         "CATALOG_GROUP_ID" => $newPriceId,
         "EXTRA_ID" => $newExtraId,
         "CURRENCY" => "RUR",
      );
      $rsProductPrices = CPrice::GetList(
         array(),
         array(
            "PRODUCT_ID" => $arProduct["ID"],
            "CATALOG_GROUP_ID" => $newPriceId
         )
      );
      if ($arProductPrice = $rsProductPrices->Fetch()) {
         if (CPrice::Update($arProductPrice['ID'], $arPriceFields, true) !== false) {
            print "Обновлена цена ".$arProductPrice['ID']." для товара ".$arProduct["ID"]."<br />";
         }
         else {
            print "Ошибка при обновлении цены ".$arProductPrice['ID']." для товара ".$arProduct["ID"].": ";
            if ($ex = $APPLICATION->GetException())
               echo $ex->GetS tring();
            echo "<br />";
         }
      }
      else {
         $priceId = CPrice::Add($arPriceFields, true);
         if ($priceId !== false) {
            print "Добавлена новая цена для товара ".$arProduct["ID"]." ".$priceId."<br />";
         }
         else {
            print "Ошибка при добавлении цены для товара ".$arProduct["ID"].": ";
            if ($ex = $APPLICATION->GetException())
               echo $ex->GetS tring();
            echo "<br />";
         }
      }

      $count++;
   }
   echo "Скрипт завершён. Обработано ".$count." товаров.";
}
 
Настроечные переменные $newExtraId, $newPriceId и $catalogIblockType задаются в начале скрипта.


mbbo, этот скрипт можно выполнить, например, из командной строки PHP в админке (Рабочий стол > Настройки > Инструменты > Командная PHP-строка)

 

 

Источник: http://dev.1c-bitrix.ru/community/forums/messages/forum6/topic16013/message254912/#message254912

Назад в раздел

Подписаться на новые материалы раздела:














CAPTCHA