• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/controller/document.php
  • Класс: BitrixCatalogControllerDocument
  • Вызов: Document::addAction
public function addAction(array $fields): ?array
{
	if (!Feature::isInventoryManagementEnabled())
	{
		$this->addError(new Error(Loc::getMessage('DOCUMENT_CONTROLLER_NO_INVENTORY_MANAGEMENT_ENABLED_ERROR')));

		return null;
	}

	$docType = $fields['DOC_TYPE'] ?? null;

	$availableTypes = self::getAvailableRestDocumentTypes();
	if (!isset($availableTypes[$docType]))
	{
		$this->addError(new Error('DOC_TYPE isn't available'));

		return null;
	}

	if (!$this->accessController->check(ActionDictionary::ACTION_STORE_DOCUMENT_MODIFY, StoreDocument::createFromArray($fields)))
	{
		$this->addError(
			new Error(Loc::getMessage('DOCUMENT_CONTROLLER_NO_RIGHTS_ERROR'))
		);

		return null;
	}

	$fields = $this->prepareFieldsAdd($fields);
	$addResult = CCatalogDocs::add($fields);
	if (!$addResult)
	{
		global $APPLICATION;
		if ($APPLICATION->GetException())
		{
			$exception = $APPLICATION->GetException();
			$this->addError(new Error($exception->GetString()));
			$APPLICATION->ResetException();

			return null;
		}
	}

	return ['DOCUMENT' => $this->get($addResult)];
}