Массово изменить количество товара для элементов каталога в битрикс

28.11.2019

Была поставлена задача - быстро изменить (изменять) количество товара (QANTITY) в каталоге на сайте CMS Битрикс

Решается она просто тремя способами :

  1. Сделать экспорт каталога в файл CSV с полями: название, внешний код(ИД), количество. Изменить в любом редакторе столбец в количество и обратно импортировать на сайт.
  2. Написать скрипт ручного запуска, который изменяет у товаров выбранного инфоблока количество
  3. Написать скрипт в init.php для изменения количества в момент создания элемента (работает только для новых элементов)

И так с первым способом всё понятно, обнако делать его лучше через пункт меню "Магазин", в инфоблоках в экспорте может не быть поля QANTITY

Второй способ - написать скрипт изменения количества и разместить его в публичной части сайта, я сделал это в папке /tools/, скрипт назвал quant.php, для его запуска достаточно набрать в адресной строке браузера - vash-site.ru/tools/quant.php. После перехода на страницу увидите информацию о текущем положении с количеством, перезагрузив страницу скрипт обновит все значения количества (QANTITY) в выбранном инфоблоке

    
    CModule::IncludeModule('iblock');
    $arFilter = array(
    'IBLOCK_ID' => 20,//Номер инфоблока
    );
    $res = CIBlockElement::GetList(false, $arFilter, array('IBLOCK_ID','ID'));
    while($el = $res->GetNext()){
    $ID = $el['ID'];
     $ar_res = CCatalogProduct::GetByID($ID);
    $newq = new CCatalogProduct;
    $newq -> Update($ID, array('QUANTITY' => '10000'));//количество
    if($newq){ echo "У элемента с ID ".$ID." количество стало - ".$ar_res["QUANTITY"]." , все OK!";
    }else{
    echo "FAIL!";
    }}
 

Третий способ подойдет для нового каталога, при ручном заполнении которого иногда забывают прописать количество, в итоге товар недоступен к покупке, хотя цена есть. Чтобы этого не случилось нужно добавить в файл /bitrix/php_interface/init.php следующий скрипт:


 AddEventHandler("sale", "OnProductAdd", "OnProductAdd");

function OnProductAdd(&$ID,$Fields)
{
    $res=Array("QUANTITY"=>"10000");
    CCatalogProduct::Update($ID,$res);
} 

Вернуться назад




X

Форма запроса регистрации

Нажимая кнопку "Отправить" вы соглашаетесь на обработку конфиденциальных данных
X

Форма заказа товара

Ваше имя*
Ваш E-mail*
Сообщение*
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке*