• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/services/manager.php
  • Класс: BitrixSaleDeliveryServicesManager
  • Вызов: Manager::createObject
static function createObject(array $srvParams)
{
	self::initHandlers();
	$errorMsg = '';
	$service = null;

	if(!isset($srvParams['PARENT_ID']))
	{
		$srvParams['PARENT_ID'] = 0;
	}

	if(class_exists($srvParams['CLASS_NAME']))
	{
		if(is_subclass_of($srvParams['CLASS_NAME'], Base::class))
		{
			try
			{
				$service = new $srvParams['CLASS_NAME']($srvParams);
			}
			catch (SystemException $err)
			{
				$errorMsg = $err->getMessage();
			}
		}
		else
		{
			$errorMsg = 'Class "' . $srvParams['CLASS_NAME'] . '" is not subclass of of BitrixSaleDeliveryServicesBase';
		}
	}
	else
	{
		$errorMsg = 'Can't create delivery object. Class "'.$srvParams['CLASS_NAME']. '" does not exist.';
	}

	if($errorMsg !== '')
	{
		static::log(
			[
			'SEVERITY' => CEventLog::SEVERITY_ERROR,
			'AUDIT_TYPE_ID' => 'SALE_DELIVERY_CREATE_OBJECT_ERROR',
			'MODULE_ID' => 'sale',
			'ITEM_ID' => 'createObject()',
			'DESCRIPTION' => $errorMsg.' Fields: '.serialize($srvParams),
			]
		);

		return null;
	}

	return $service;
}