• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/v2/productrow.php
  • Класс: Bitrix\Crm\Controller\v2\ProductRow
  • Вызов: ProductRow::setAction
public function setAction(string $ownerType, int $ownerId, array $productRows): ?array
{
	/** @var Factory $factory */
	/** @var Item $item */
	[$factory, $item] = $this->getFactoryAndItem($ownerType, $ownerId);
	if (!isset($factory) || !isset($item))
	{
		return null;
	}

	if (!Container::getInstance()->getUserPermissions()->canUpdateItem($item))
	{
		$this->addError(
			ErrorCode::getAccessDeniedError()
		);

		return null;
	}

	$productRowsWithSnakeCaseKeys = $this->convertKeysToUpper($productRows);

	$productsSetResult = $item->setProductRowsFromArrays($productRowsWithSnakeCaseKeys);
	if (!$productsSetResult->isSuccess())
	{
		$this->addErrors($productsSetResult->getErrors());

		return null;
	}

	$itemUpdateResult = $factory->getUpdateOperation($item)->launch();
	if (!$itemUpdateResult->isSuccess())
	{
		$this->addErrors($itemUpdateResult->getErrors());

		return null;
	}

	return [
		'productRows' => $item->getProductRows() ? $item->getProductRows()->getAll() : [],
	];
}