• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/controller/productproperty.php
  • Класс: BitrixCatalogControllerProductProperty
  • Вызов: ProductProperty::updateAction
public function updateAction(int $id, array $fields): ?array
{
	$existsResult = $this->exists($id);
	if (!$existsResult->isSuccess())
	{
		$this->addErrors($existsResult->getErrors());
		return null;
	}

	$property = $this->getPropertyById($id);
	$type = [
		'PROPERTY_TYPE' => $fields['PROPERTY_TYPE'] ?? $property['PROPERTY_TYPE'],
		'USER_TYPE' => $fields['USER_TYPE'] ?? $property['USER_TYPE'],
	];
	$typeCheckResult = $this->checkPropertyType($type);
	if (!$typeCheckResult->isSuccess())
	{
		$this->addErrors($typeCheckResult->getErrors());
		return null;
	}

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

	$updateResult = (new CIBlockProperty())->Update($id, $fields);
	if (!$updateResult)
	{
		if ($application->GetException())
		{
			$this->addError(new Error($application->GetException()->GetString()));
		}
		else
		{
			$this->addError(new Error('Error updating product property'));
		}
		return null;
	}

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