Добрый день. Мне необходимо иметь дубли складов с одинаковыми остатками. Для синхронизации остатков пытаюсь использовать событие OnStoreProductUpdate, которое отлично работает если изменяю склад-дубль с бОльшим id. Но если изменять склад, который был создан ранее, то, судя по результатам дебага, сначала в дублирующий склад записывается нужный мне результат, а потом он же заменяется старым результатом (насколько я понял остатки просто обновляются от меньшего к большему айди). Привязываю склады через UF_ID_MAIN. Подскажите, как решить эту проблему, возможно есть другие, более оптимальные способы дублирования складов?
AddEventHandler("catalog", "OnStoreProductUpdate","MyOnStoreProductSave");
function MyOnStoreProductSave($id, $arFields)
{
$arFilter = Array("ACTIVE" => "Y", "ID"=>$arFields["STORE_ID"]);
$rsStores = CCatalogStore::GetList(
array(),
$arFilter,
false,
false,
array("ID", "UF_ID_MAIN")
);
while($arStore = $rsStores->Fetch()) {
$arStores[] = $arStore;
}
$rs = CCatalogStoreProduct::GetList(false, array('PRODUCT_ID'=> $arFields["PRODUCT_ID"], 'STORE_ID' => $arStores[0]['UF_ID_MAIN']));
while($ar_fields = $rs->GetNext())
{
if($ar_fields['AMOUNT'] != $arFields['AMOUNT']){
$arFieldsNew = Array(
"PRODUCT_ID" => $arFields["PRODUCT_ID"],
"STORE_ID" => $arStores[0]['UF_ID_MAIN'],
"AMOUNT" => $arFields['AMOUNT'],
);
CCatalogStoreProduct::Update($ar_fields['ID'], $arFieldsNew);
}
}
}