@Franked

Как вывести количество имеющихся в конкретном складе тех или иных товаров?

Доброго времени суток!

Помогите мне пожалуйста разобраться, всю ночь провозился с задачей, так и не удалось реализовать, хотя в интернете много постов подобных видел и уже по всякому перепробовал, но почему-то так и не вышло :(

В общем, у меня имеется 3 склада. Также моя корзина наполнена 4мя товарами. Задача состоит в том, чтобы вывести количество каждого имеющегося в корзине товара в каждом из складов.

То есть как-то так:
Склад_№1:
- Товар_№1: Всего на складе №1 таких товаров №1: 1шт.
- Товар_№2: Всего на складе №1 таких товаров №2: 3шт.
- Товар_№3: Всего на складе №1 таких товаров №3: 7шт.
- Товар_№4: Всего на складе №1 таких товаров №4: 0шт.

Склад_№2:
- Товар_№1: Всего на складе №2 таких товаров №1: 11шт.
- Товар_№2: Всего на складе №2 таких товаров №2: 23шт.
- Товар_№3: Всего на складе №2 таких товаров №3: 2шт.
- Товар_№4: Всего на складе №2 таких товаров №4: 31шт.

Сам я пытался делать через запросы:
CCatalogStoreProduct::GetList(array(), array("PRODUCT_ID" => $prod_id, , "STORE_ID" => $store_ID), false, false, array("SELECT" => "AMOUNT"));

А также:
\Bitrix\Catalog\StoreProductTable::getList(array('filter' => array('=PRODUCT_ID' >= 12391, '=STORE_ID' >= 2))));

Но почему-то они возвращают мне как результат bool(false) значения. За исключением второго описанного мной запроса. Второй возвращает хоть что-то, какой то товар находит не из корзины. К слову, PRODUCT_ID' >= 12391 - именно при таком раскладе срабатывает...

Скажите пожалуйста, что можно предпринять? Быть может я запрос все-таки неправильный подаю..,поправьте меня пожалуйста...
  • Вопрос задан
  • 3186 просмотров
Пригласить эксперта
Ответы на вопрос 2
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Попробовал использовать \Bitrix\Catalog\StoreProductTable::getList
Вот таблица с данными
5be913bcd42f9031002584.png
Вот запрос
CModule::IncludeModule("catalog");

$products = [537, 547];
$amount = \Bitrix\Catalog\StoreProductTable::getList([
	'filter' => [
		'PRODUCT_ID' => $products
	]
])->fetchAll();

print_r($amount);

5be913c5e1dd4427461151.png

У вас в запросе
'=PRODUCT_ID' >= 12391,
А это:
('=PRODUCT_ID' >= 12391) === false
и в итоге фильтр принимает вид
array(false, '=STORE_ID' >= 2)
Ответ написан
Можно использовать следующее:

CModule::IncludeModule('catalog');
$arFilter = Array("PRODUCT_ID"=>array(94247,162284));
$rsStoreAmount = CCatalogStoreProduct::GetList(Array(),$arFilter,false,false,Array());
while($arStoreAmount = $rsStoreAmount->Fetch())
{
	echo "<pre>";
	print_r($arStoreAmount);
	echo "</pre>";
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы