После включения складского учета необходимо заполнить остаток товаров по складам. Тем более, если работает выгрузка товаров из 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, в цикле пробегаемся по каждому и меняем количество каждого на складе.