Top.Mail.Ru
Заполнить остаток товаров на складе из доступного остатка - разработка и поддержка сайтов BUSSOL

Заполнить остаток товаров на складе из доступного остатка



Автор:

Дата публикации:

Заполнить остаток товаров на складе из доступного остатка

После включения складского учета необходимо заполнить остаток товаров по складам. Тем более, если работает выгрузка товаров из 1С, то остатки постоянно обновляются. Следовательно нужно сделать автоматическое обновление остаток на нужном складе. Для это задачи можно использовать скрипт на CRON:


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

use \Bitrix\Main\Loader;

Loader::IncludeModule('iblock');
Loader::IncludeModule('catalog');

$addProps = CIBlockElement::GetList(
        Array("ID" => "ASC"),
        Array("IBLOCK_ID" => 5),
        false,
        false,
        Array(
            'ID',
            'CATALOG_QUANTITY',
        )
);
while ($ar_fields = $addProps->Fetch()) {
    $arFields = Array(
        "PRODUCT_ID" => $ar_fields['ID'],
        "STORE_ID" => 3,
        "AMOUNT" => (int)$ar_fields['CATALOG_QUANTITY']
    );
    $ID = CCatalogStoreProduct::UpdateFromForm($arFields);
}

Подключаем пролог и два модуля iblock и catalog. Первый модуль нам нужен для использования метода GetList класса CIBlockElement, чтобы выбрать все активные товары. А второй нужен для использования метода UpdateFromForm класса CCatalogStoreProduct, чтобы изменить количество товара AMOUNT с кодом PRODUCT_ID на складе с кодом STORE_ID.

Итак, после выборки товаров с помощью GetList, в цикле пробегаемся по каждому и меняем количество каждого на складе.

241027, Россия, Брянская область, поселок Путевка, улица Рослальская, дом 8, кв.121
Телефон: +7 (950) 692-91-71

После включения складского учета необходимо заполнить остаток товаров по складам. Тем более, если работает выгрузка товаров из 1С, то остатки постоянно обновляются. Следовательно нужно сделать автоматическое обновление остаток на нужном складе. Для это задачи можно использовать скрипт на CRON:


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

use \Bitrix\Main\Loader;

Loader::IncludeModule('iblock');
Loader::IncludeModule('catalog');

$addProps = CIBlockElement::GetList(
        Array("ID" => "ASC"),
        Array("IBLOCK_ID" => 5),
        false,
        false,
        Array(
            'ID',
            'CATALOG_QUANTITY',
        )
);
while ($ar_fields = $addProps->Fetch()) {
    $arFields = Array(
        "PRODUCT_ID" => $ar_fields['ID'],
        "STORE_ID" => 3,
        "AMOUNT" => (int)$ar_fields['CATALOG_QUANTITY']
    );
    $ID = CCatalogStoreProduct::UpdateFromForm($arFields);
}

Подключаем пролог и два модуля iblock и catalog. Первый модуль нам нужен для использования метода GetList класса CIBlockElement, чтобы выбрать все активные товары. А второй нужен для использования метода UpdateFromForm класса CCatalogStoreProduct, чтобы изменить количество товара AMOUNT с кодом PRODUCT_ID на складе с кодом STORE_ID.

Итак, после выборки товаров с помощью GetList, в цикле пробегаемся по каждому и меняем количество каждого на складе.


Другие статьи:  Обновление Битрикс до поддержки php 8.x c php 7.x / Хранение сессий в базе данных Битрикс / Получить данные о заказе в Битрикс

Похожие статьи

Технология композитный сайт
С технологией Автокомпозит - больше не требуется глубоких настроек и сложного программирования. Композитный режим включается нажатием одной кнопки в административном разделе сайта
Проблема кеширования левого меню в решениях АСПРО
В последнее время пользователи сайтов, работающих на решениях компании АСПРО, сталкиваются с тем, что в разных разделах сайта левое меню не меняется, хотя оно разное для каждого из этих разделов. В данном видео показан способ обхода этой проблемы