• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/controller/productproperty.php
  • Класс: BitrixCatalogControllerProductProperty
  • Вызов: ProductProperty::addAction
public function addAction(array $fields): ?array
{
	if (!$this->isIblockCatalog((int)$fields['IBLOCK_ID']))
	{
		$this->addError(new Error('The specified iblock is not a product catalog'));
		return null;
	}

	$iblockPermissionsCheckResult = $this->checkIblockModifyPermission($fields['IBLOCK_ID']);
	if (!$iblockPermissionsCheckResult->isSuccess())
	{
		$this->addErrors($iblockPermissionsCheckResult->getErrors());
		return null;
	}

	$typeCheckResult = $this->checkPropertyType($fields);
	if (!$typeCheckResult->isSuccess())
	{
		$this->addErrors($typeCheckResult->getErrors());
		return null;
	}

	$this->processCustomTypesBeforeAdd($fields);

	$application = self::getApplication();
	$application->ResetException();

	$addResult = (new CIBlockProperty())->Add($fields);
	if (!$addResult)
	{
		if ($application->GetException())
		{
			$this->addError(new Error($application->GetException()->GetString()));
		}
		else
		{
			$this->addError(new Error('Error adding property'));
		}
		return null;
	}

	$this->processCustomTypesAfterAdd((int)$addResult, $fields);

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