• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/controller.php
  • Класс: BitrixSaleControllerController
  • Вызов: Controller::processAfterAction
protected function processAfterAction(EngineAction $action, $result)
{
	$externalizer = null;
	if($this->errorCollection->count()==0)
	{
		if($result instanceof EngineResponseDataTypePage || is_array($result))
		{
			$data = $result instanceof EngineResponseDataTypePage ?
				[$result->getId()=>$result->getItems()]:$result;

			if($this->isCrmModuleInstalled() && Loader::includeModule('crm'))
			{
				$externalizer = BitrixCrmOrderRestExternalizer::buildByAction($action, $data, $this->getScope());
			}
			else
			{
				$externalizer = BitrixSaleRestExternalizer::buildByAction($action, $data, $this->getScope());
			}
		}
	}
	else
	{
		return parent::processAfterAction($action, $result);
	}

	if($externalizer instanceof ModificationFieldsBase)
	{
		if($this->getScope() == EngineController::SCOPE_REST)
		{
			// nothing
		}
		else if($this->getScope() == EngineController::SCOPE_AJAX)
		{
			$externalizer->setFormat([
				ModificationFieldsBase::TO_WHITE_LIST,
				ModificationFieldsBase::SORTING_KEYS
			]);
		}

		if($this->getScope() == EngineController::SCOPE_REST)
		{
			return $result instanceof EngineResponseDataTypePage ?
				$externalizer->getPage($result):$externalizer;
		}
		else if($this->getScope() == EngineController::SCOPE_AJAX)
		{
			return $externalizer->toArray();
		}
	}

	return parent::processAfterAction($action, $result);
}