• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/action/entity/saveorderaction.php
  • Класс: BitrixSaleControllerActionEntitySaveOrderAction
  • Вызов: SaveOrderAction::setProperties
private function setProperties(SaleOrder $order, array $properties): SaleResult
{
	$result = new SaleResult();

	$propertyCollection = $order->getPropertyCollection();
	$setValuesResult = $propertyCollection->setValuesFromPost(['PROPERTIES' => $properties], []);
	if (!$setValuesResult->isSuccess())
	{
		foreach ($setValuesResult->getErrors() as $error)
		{
			$result->addError(new MainError($error->getMessage()));
		}
	}

	/** @var SalePropertyValue $propValue */
	foreach ($propertyCollection as $propValue)
	{
		if ($propValue->isUtil())
		{
			continue;
		}

		$verifyResult = $propValue->verify();
		if (!$verifyResult->isSuccess())
		{
			foreach ($verifyResult->getErrors() as $error)
			{
				$result->addError(
					new MainError($error->getMessage(), 0, ['id' => $propValue->getPropertyId()])
				);
			}
		}

		$checkRequiredValueResult = $propValue->checkRequiredValue($propValue->getPropertyId(), $propValue->getValue());
		if (!$checkRequiredValueResult->isSuccess())
		{
			foreach ($checkRequiredValueResult->getErrors() as $error)
			{
				$result->addError(
					new MainError($error->getMessage(), 0, ['id' => $propValue->getPropertyId()])
				);
			}
		}
	}

	return $result;
}