Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Установить остатки товара на складе из доступных остатков.

Просмотров: 4064

Задача, заполнить остатки товаров, в 1С-Битрикс, из параметра "Доступное количество".

Для этого достаточно воспользоваться методами CIBlockElement::GetList и CCatalogStoreProduct::Add


CModule::IncludeModule('iblock');
Cmodule::IncludeModule('catalog');
$addProps = CIBlockElement::GetList(
        Array("ID" => "ASC"),
        Array("IBLOCK_ID" => 7),
        false,
        false,
        Array(
            'ID',
            'CATALOG_QUANTITY',
        )
);
while ($ar_fields = $addProps->Fetch()) {
        $arFields = Array(
            "PRODUCT_ID" => $ar_fields['ID'],
            "STORE_ID" => 1,
            "AMOUNT" => $ar_fields['CATALOG_QUANTITY'],
        );
        $ID = CCatalogStoreProduct::Add($arFields);
}

Пояснения:

  • Подключили модули инфоблока и каталога
  • С помощью CIBlockElement::GetList - получили ID и количества товара из инфоблока ID-7
  • В цикле, прошлись по всем элементам и скопировали количества, на остаток склада с ID=1 методом CCatalogStoreProduct::Add
Михаил Базаров 27.08.2022
Цитата
Артём написал:
как сделать что бы при обновлении остатка (доступного) перезаписывалось по данному коду остаток на складе

Можно сделать обработчик события с OnAfterIBlockElementUpdate
В init.php
Код
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("UpdateAmounts", "OnAfterIBlockElementUpdateHandler"));
class UpdateAmounts
{
    function OnAfterIBlockElementUpdateHandler(&$arFields)
    {
       Получаем товар по его arFields['ID'] и делаем с ним что хотим
    }
}


Если не критична скорость обновления, можно повесить этот скрипт на cron что бы отрабатывал с каким-то периодом.
Артём 26.08.2022
как сделать что бы при обновлении остатка (доступного) перезаписывалось по данному коду остаток на складе

Работы из портфолио

В портфолио не публикуются работы, доля моего участия в которых менее 80%.
Часто обращаются за доработками уже существующих проектов или реализацией не стандратного функционала на готовых сайтах.