• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/propertyvariant.php
  • Класс: BitrixSaleControllerPropertyVariant
  • Вызов: PropertyVariant::addAction
public function addAction(array $fields): ?array
{
	$variant = new CSaleOrderPropsVariant();
	$variantId = 0;

	$r = $this->existsProperty($fields['ORDER_PROPS_ID']);

	if($r->isSuccess())
	{
		if(!isset($fields['XML_ID']) && $fields['XML_ID'] == '')
		{
			$fields['XML_ID'] = OrderPropsTable::generateXmlId();
		}

		$variantId = $variant->Add($fields);
		if ((int)$variantId <= 0)
		{
			if ($ex = self::getApplication()->GetException())
			{
				$r->addError(new Error($ex->GetString(), $ex->GetID()));
			}
			else
			{
				$r->addError(new Error('variant add error', 201550000002));
			}
		}
	}

	if(!$r->isSuccess())
	{
		foreach ($r->getErrors() as $error)
		{
			$this->addError(new Error($error->getMessage(), 201550000003));
		}
		return null;
	}
	else
		return ['PROPERTY_VARIANT'=>$this->get($variantId)];
}