- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/controller/document.php
- Класс: BitrixCatalogControllerDocument
- Вызов: Document::conductListAction
public function conductListAction(array $documentIds): ?bool
{
if (!Feature::isInventoryManagementEnabled())
{
$this->addError(new Error(Loc::getMessage('DOCUMENT_CONTROLLER_NO_INVENTORY_MANAGEMENT_ENABLED_ERROR')));
return null;
}
if (!BitrixCatalogComponentUseStore::isUsed())
{
$this->addError(new Error(Loc::getMessage('DOCUMENT_CONTROLLER_MANAGEMENT_NOT_ENABLED')));
return null;
}
global $APPLICATION;
$documentData = $this->getDocumentData($documentIds);
$userId = CurrentUser::get()->getId();
foreach ($documentIds as $documentId)
{
$document = $documentData[$documentId] ?? null;
if (!$document)
{
$this->addError(
new Error(Loc::getMessage(
'CATALOG_CONTROLLER_DOCUMENT_CONDUCT_GENERAL_ERROR',
[
'#ERROR#' => Loc::getMessage('CATALOG_CONTROLLER_DOCUMENT_NOT_FOUND'),
]
))
);
continue;
}
$documentTitle = $document['TITLE'] ?: StoreDocumentTable::getTypeList(true)[$document['DOC_TYPE']];
$can = $this->accessController->check(
ActionDictionary::ACTION_STORE_DOCUMENT_CONDUCT,
StoreDocument::createFromArray($document)
);
if (!$can)
{
$this->addError(
new Error(Loc::getMessage('CATALOG_CONTROLLER_DOCUMENT_CONDUCT_ERROR',
[
'#DOC_TITLE#' => htmlspecialcharsbx($documentTitle),
'#ERROR#' => Loc::getMessage('DOCUMENT_CONTROLLER_NO_RIGHTS_ERROR'),
]
))
);
continue;
}
$isConducted = CCatalogDocs::conductDocument($documentId, $userId);
if (!$isConducted)
{
if ($APPLICATION->GetException())
{
$this->addError(
new Error(Loc::getMessage(
'DOCUMENT_CONTROLLER_CONDUCT_ERROR',
[
'#DOC_TITLE#' => htmlspecialcharsbx($documentTitle),
'#ERROR#' => htmlspecialcharsbx($APPLICATION->GetException()->GetString()),
]
))
);
$APPLICATION->ResetException();
}
else
{
$this->addError(
new Error(Loc::getMessage('CATALOG_CONTROLLER_DOCUMENT_CONDUCT_GENERAL_ERROR',
[
'#DOC_TITLE#' => htmlspecialcharsbx($documentTitle),
]
))
);
}
}
}
if (!$this->errorCollection->isEmpty())
{
return null;
}
return true;
}