Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Допустим у нас идет цикл элементов, в котором мы обновляем остатки (как раз товары). Типичный импорт.
Примерно так:
Как обновить остаток?
Мы не сможем сделать вот так:
Потому что товара еще может не быть в базе (не смотря на то, что элемент уже есть).
Мы можем сделать вот так:
По идее этого достаточно. В последнем случае системадобавит товар только если его нет .
Но я бы улучшил еще вот так обновление остатка:
То есть - идем добавлять товар только если его 100% нет еще в системе. В ином случае обновляем.
Назад в раздел
то ждем ваше обращение в нашей службе тех поддержки.
Добавляем товар в Битрикс правильно
Немного ликбеза. В Битрикс элемент инфоблока отдельно, цена (несколько) отдельно, и сущность товара - отдельно. Что такое товар? Это остаток, закупочная цена, настройки уменьшения остатка, и так далее. В общем, все, кроме цены. Вот тут небольшой совет как его добавлять более оптимально.Допустим у нас идет цикл элементов, в котором мы обновляем остатки (как раз товары). Типичный импорт.
Примерно так:
$res = CIBlockElement::getList(array(), array('ID', 'CATALOG_QUANTITY')); while ($row = $res->fetch()) { // } |
Как обновить остаток?
Мы не сможем сделать вот так:
CCatalogProduct::update($row['ID'], array('QUANTITY' => $fields['QUANTITY'])); |
Потому что товара еще может не быть в базе (не смотря на то, что элемент уже есть).
Мы можем сделать вот так:
CCatalogProduct::add(array('ID' => $row['ID'], 'QUANTITY' => $fields['QUANTITY'])); |
По идее этого достаточно. В последнем случае система
Но я бы улучшил еще вот так обновление остатка:
if ($row['CATALOG_QUANTITY'] === null || $row['CATALOG_QUANTITY'] === '') { CCatalogProduct::add(array('ID' => $row['ID'], 'QUANTITY' => $fields['QUANTITY']), false); } elseif ($fields['QUANTITY'] != $row['CATALOG_QUANTITY']) { CCatalogProduct::update($row['ID'], array('QUANTITY' => $fields['QUANTITY'])); } |
То есть - идем добавлять товар только если его 100% нет еще в системе. В ином случае обновляем.
Назад в раздел
Подписаться на новые материалы раздела: