Просмотров: 6832
Задача, заполнить остатки товаров, в 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" => (int)$ar_fields['CATALOG_QUANTITY']
);
$ID = CCatalogStoreProduct::UpdateFromForm($arFields);
}
Пояснения:
- Подключили модули инфоблока и каталога
- С помощью CIBlockElement::GetList - получили ID и количество доступного товара из инфоблока ID-7
- В цикле, прошлись по всем элементам и обновили количества остатка на складе с ID=1, методом CCatalogStoreProduct::UpdateFromForm
Все комментарии:
Оставить комментарий
Артём 26.08.2022
как сделать что бы при обновлении остатка (доступного) перезаписывалось по данному коду остаток на складе

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