- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/grid/productaction.php
- Класс: BitrixCatalogGridProductAction
- Вызов: ProductAction::checkInventoryDocumentByProducts
static function checkInventoryDocumentByProducts(array $elementIds): MainResult
{
$result = new MainResult();
if (!CatalogConfigState::isUsedInventoryManagement())
{
$result->setData(['PRODUCT_IDS' => $elementIds]);
return $result;
}
$validList = array_fill_keys($elementIds, true);
$errorList = [];
$query = new ORMQueryQuery(CatalogStoreDocumentElementTable::getEntity());
$query->setDistinct(true);
$query->setSelect([
'ELEMENT_ID',
'NAME' => 'ELEMENT.NAME'
]);
$query->setFilter(['=DOCUMENT.STATUS' => 'Y']);
foreach (array_chunk($elementIds, 500) as $pageIds)
{
$query->addFilter('@ELEMENT_ID', $pageIds);
$iterator = $query->exec();
while ($row = $iterator->fetch())
{
$id = (int)$row['ELEMENT_ID'];
unset($validList[$id]);
$errorList[] = '[' . $row['ELEMENT_ID'] . '] ' . $row['NAME'];
}
unset($row, $iterator);
}
unset($pagesIds);
unset($query);
$result->setData(['PRODUCT_IDS' => array_keys($validList)]);
if (!empty($errorList))
{
$result->addError(new MainError(
Loc::getMessage(
'BX_CATALOG_PRODUCT_ACTION_ERR_SELECTED_INVENTORY_PRODUCTS',
['#NAMES#' => implode(', ', $errorList)]
)
));
}
return $result;
}