@digamer

Как обновить количество товара на складе в редакции Битрикс «Малый бизнес»?

Редакция битрикс - Малый бизнес. Склад 1.

Задача. При добавлении/обновлении товара брать "Параметры - доступное количество" которое приходит из 1с и вставлять его в Склады-количество товара.

Пробовал сделать это различными событиями, не выходило.
$arFieldsStoreAmount = Array(
                "PRODUCT_ID" => $arFields['ID'],
                "STORE_ID" => STORE_ID,
                "AMOUNT" => $arFields["QUANTITY"]
            );
            $amount = \CCatalogStoreProduct::Add($arFieldsStoreAmount);

При добавлении товара код выполняется, отдает id но записи в b_catalog_store_product записи не просходит.

Если же я в Командная PHP-строка введу явно:

$arFieldsStoreAmount = Array(
                "PRODUCT_ID" => 544,
                "STORE_ID" => 1,
                "AMOUNT" => 33
            );
            $amount = \CCatalogStoreProduct::Add($arFieldsStoreAmount);


То запись в базу прекрасно происходит.

Как быть, кто как выкручивался, или же в этой редакции вообще нет смысла возиться с этой задачей?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
@digamer Автор вопроса
В общем сошелся на мысли, что вместо непонятных костылей, проще всего будет установить из 1с внешний код склада в Битриксе, а в насткройках выгрузки поставить галочку "Выгружать остатки по складам". Должно заработать.

АПД. В 1с сделал выгрузку с галочкой "Выгружать остатки по складам" в файл на компе. В этом файле нашел ИД Склада и вписал его в поле "Внешний код" на сайте. Все заработало.
Так что ничего придумывать не надо в плане кода, все уже придумано до нас.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@anton99zel
29а класс средней школы №7
Вот вам пример рабочий, добавьте склад и пуляйте из 1с гет запросами
$iOstatok - Кол-во на складе
$iElementID - id товара
$iBlock - инфоблок

if (isset($iOstatok)) {
        if ($iOstatok > 0) {
            $el = new CIBlockElement;
            /*активировать, если деактивирована*/
            if ($ar_res["ACTIVE"] == "N") {
                /*активировать*/
                $arLoadProductArray = Array(
                    "IBLOCK_SECTION_ID" => false,
                    "IBLOCK_ID" => $iBlock,
                    "ACTIVE" => "Y"
                );
                $el->Update($iElementID, $arLoadProductArray);
            }
            Cmodule::IncludeModule('catalog');
            $arFields = array("QUANTITY" => $iOstatok);
            CCatalogProduct::Update($iElementID, $arFields);
            //$el->SetPropertyValues($iElementID, $iBlock, $iOstatok, "QUANTITY");
            /*обновление остатков*/
        } else {
            /*обновление остатков*/
            Cmodule::IncludeModule('catalog');
            $el = new CIBlockElement;
            $arFields = array("QUANTITY" => $iOstatok);
            CCatalogProduct::Update($iElementID, $arFields);
        }
    }
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы