@redesupar

Как изменить количество товаров после обмена 1с битрикс?

После обмена мне надо менять доступное количество товара, делаю таким образом

AddEventHandler('catalog', 'OnCompleteCatalogImport1C', 'quantityCatalogImportStep');

function quantityCatalogImportStep() 
{
			$addProps = CIBlockElement::GetList (
	Array("QUANTITY" => "ASC"),
	Array("IBLOCK_ID" => 18),
false,
		false,
			Array(
			'ID', 'QUANTITY', 'NAME', 'PROPERTY_MIN_UPAKOVKA'
			)
);
while($ar_fields = $addProps->GetNext())
{

   $kolvo = $ar_fields['QUANTITY'];
   $min_upakovka = $ar_fields['PROPERTY_MIN_UPAKOVKA_VALUE'];
	$new_kolvo = (int)($kolvo / $min_upakovka);
      if ($ar_fields['QUANTITY'] > 0 && $ar_fields['PROPERTY_MIN_UPAKOVKA_VALUE'] > 0) {

	Cmodule::IncludeModule('catalog');
	$PRODUCT_ID = $ar_fields['ID'];
	$arFields = array(
		'QUANTITY' => $new_kolvo
	);
	CCatalogProduct::Update($PRODUCT_ID, $arFields);
    }


}
}


но она меняет после последнего обмена, а количества появляются пораньше т.е. ненужное мне количество висит пока идёт импорт (полчаса/час) на какое событие или как сделать так чтобы она меняла сразу?
ставил на OnSuccessCatalogImport1C, но тогда он при каждом пакете меняет кол-во а это 12 раз
  • Вопрос задан
  • 621 просмотр
Решения вопроса 1
А Вы пробовали менять количество во время обмена?
пример обработчика можно посмотреть здесь.

И пара замечаний:
  1. не используйте GetNext() , если достаточно Fetch()
  2. было бы лучше сначала проверять, что размер упаковки ненулевой, а потом делить на него
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы