Добро пожаловать в самую большую библиотеку wordpress-кода в рунете

Массово обновить остатки для товаров в каталоге Bitrix

Bitrix · 30.08.2024 10:31

0 0 72

В штатном импорте из CSV нет возможности импортировать остатки. Не всегда на сайте нужен  полноценный складской учет, но какой-то базовый нужен - для внутренней аналитики. Поэтому его включают, а потом вручную проставляют остатки для каждого товара (через массовое редактирование). 
А иногда задача может быть достаточно простой - в новом каталоге массово задать всем товарам начальный остаток. Это можно сделать с помощью данного сниппета и php-консоли Битрикс. 
Добавляете данный код в консоль. 
В начале нужно указать правильный id нужного вам инфоблока каталога, в переменную CATALOG_IBLOCK_ID. 
А в переменную $newQuantity подставить желаемое количество (сейчас 1000)

// Определяем ID инфоблока каталога
define("CATALOG_IBLOCK_ID", 63); // Укажите здесь правильный ID вашего инфоблока

if (!\Bitrix\Main\Loader::includeModule('iblock')) {
die('Модуль "iblock" не установлен.');
}

if (!\Bitrix\Main\Loader::includeModule('catalog')) {
die('Модуль "catalog" не установлен.');
}

use Bitrix\Iblock\ElementTable;
use Bitrix\Catalog\ProductTable;
use Bitrix\Main\Type\DateTime;

try {
// Получаем всех элементов инфоблока
$rsElements = ElementTable::getList([
'filter' => ['IBLOCK_ID' => CATALOG_IBLOCK_ID],
'select' => ['ID']
]);

while ($arElement = $rsElements->fetch()) {
$productId = $arElement['ID'];

// Установите желаемое значение для CATALOG_QUANTITY
$newQuantity = 1000; // Укажите нужное значение

// Обновляем поле CATALOG_QUANTITY
$result = ProductTable::update(
$productId,
[
'QUANTITY' => $newQuantity,
'AVAILABLE' => 'Y',
'TIMESTAMP_X' => new DateTime()
]
);

if ($result->isSuccess()) {
echo "Продукт с ID {$productId} обновлен до количества {$newQuantity}.\n";
} else {
echo "Ошибка при обновлении продукта с ID {$productId}: " . implode(', ', $result->getErrorMessages()) . "\n";
}
}
} catch (\Exception $e) {
echo "Произошла ошибка: " . $e->getMessage() . "\n";
}

Обсудить сниппет
romapad

romapad

присоединился
30.04.2016

  • 69 Добавлено
    Сниппетов
  • 2 Получено
    Лайков
  • 0 Comments Posted
Теги
Поделиться с друзьями