Есть товары. Складские остатки реализованы в виде отдельного инфоблока. Текущие склады, где есть товар, получаю от юзера:
| Код |
|---|
$warehouses = array_keys($post['stocks']);
|
где $post['stocks'] - остатки товара по складам с айди склада в качестве ключа
Далее получаю только остатки для обновляемого продукта:
| Код |
|---|
$dbStockBalances = CIBlockElement::GetList(
array(),
array('IBLOCK_ID' => $stockBalanceIblockId, 'PROPERTY_PRODUCT' => $productId),
false,
false,
array('ID', 'IBLOCK_ID', 'NAME', 'PROPERTY_PRODUCT', 'PROPERTY_WAREHOUSE', 'PROPERTY_QUANTITY', 'PROPERTY_RESERVED'),
);
$oldStocks = array();
while ($arStockBalance = $dbStockBalances->Fetch()) {
$oldStocks[] = $arStockBalance; } |
После мне нужно пробежаться по каждому остатку и проверить, есть ли такой среди складов и, если его нет, удалить:
| Код |
|---|
foreach ($oldStocks as $stock) {
if (!in_array(intval($stock['PROPERTY_WAREHOUSE_VALUE']), $warehouses)) {
if (!CIBlockElement::Delete($stock['ID'])) {
echo 'Ошибка при удалении складского остатка ' . $stock['NAME'];
die;
}
}
} |
Далее я обновляю/добавляю остатки, поля, цены и т.п. Так вот, без последнего цикла всё обновляется как надо, с ним - удаляются вообще все элементы инфоблока. В init.php ничего такого нет, я уже не знаю куда копать