@prog90

Как задать всем товарам количество random в Битрикс?

Складской учет отключен.
Импорт товаров. Графа количество отсутствует.
Импортировать заново долго и добавлять колонку.
ТОВАРЫ НЕ ПРОСТЫЕ, а с предложениями.
Нужно запустить какой-нибудь код, типа в php_interface, который бы с шагом времени перебирал все товарные предложения из каталога Товары Предложения, и проставлял random количество от 1 - 10.
Задержка - где-то 20 секунд. Так как на хостинге стоит лимитация по времени исполнения исходного кода.
  • Вопрос задан
  • 282 просмотра
Пригласить эксперта
Ответы на вопрос 2
@freekirill
Пишу под Битрикс
Я бы все это бы сделал бы на кроне , этим можно лимиты обойти
<?
// увеличеваем лимиты сервера
@set_time_limit(30000);
ini_set('max_execution_time', 30000);


// грузим классы Битрикса
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
Cmodule::IncludeModule('catalog');
Cmodule::IncludeModule('iblock');

$$IBLOCKID = ''; // Задем Иблок с товармыми предложениями

// проходимся по всем товарам
$arFilter = Array("IBLOCK_ID"=>$IBLOCKID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", 'INCLUDE_SUBSECTIONS'=>'Y', );
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, array());
while ($ob = $res->GetNextElement())
{
    $arr = $ob->GetFields();
    // задаем кол-во рандомное
    $kolvo =  rand(1,11);
    // вставляем его
    $arPrise = array('QUANTITY' => $kolvo);// зарезервированное количество
    CCatalogProduct::Update($arr['ID'], $arPrise);
    
}

echo 'Скрип сработал  все хорошо (:';

?>
Ответ написан
Комментировать
@ZardoZAntony
программист, сис. админ
Не знаю как для предложений, а для обычных товаров будет работать точно и намного быстрее штатного механизма битрикса. Это если 1 каталог на сайте, если несколько, то нужно доп. фильтрация
AddEventHandler('catalog', 'OnSuccessCatalogImport1C', 'customCatalogImportStep');

/**
 * Устанавливаем случайное кол-во товаров
 * @param $arParams
 * @param $arFields
 */
function customCatalogImportStep($arParams, $arFields) {
    global $DB;
    $DB->Query('UPDATE b_catalog_product SET AVAILABLE = "Y", QUANTITY = FLOOR(1 + RAND() * 10);');
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы