Блин, надеюсь, уловили мою мысль 
По поводу хелперов - тут надо осторожно. По сути zomby6888 прав - обычно их используют как помощников представлений. А вот когда модель использует хелпер для возврата результатов - нужно задуматься об архитектуре приложения. Что-то тут не так.
Мысль уловил, спасибо. Но как тогда быть в следующей ситуации (реализация обсуждалась неоднократно выше):
вьюха выводит список операций по договору, getListQuery() в модели через состояние модели получает номер договора для формирования запроса, по сути номер договора является параметром: контроллер получает номер договора из реквеста и отсылает его в состояние модели (возможно, неправильно выразился, но ВЫ, надеюсь, меня поняли):
class MfoControllerDocumc extends JControllerLegacy
{
public function work()
{
$uri = JFactory::getURI();
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
$ulogin = JFactory::getUser()->username;
$loan = $this->input->getString('loan', '');
$dtmin = JFactory::getDate($this->input->getString('dtfrom', ''))->format('Y-m-d');
$dtmax = JFactory::getDate($this->input->getString('dtto', ''))->format('Y-m-d');
$model = $this->getModel('raspisanie');
$model->setState('login', $ulogin);
$model->setState('loan', $loan);
$model->setState('dtmin', $dtmin);
$model->setState('dtmax', $dtmax);
$view = $this->getView('Documc', 'html');
$view->setModel($model, true);
$this->setRedirect(JRoute::_($uri));
}
}
В модели:
protected function getListQuery()
{
$ulogin = $this->getState('login');
$loan = $this->getState('loan');
$dtmin = $this->getState('dtmin');
$dtmax = $this->getState('dtmax');
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('odate, docname, adebet, acredit, pdebet, pcredit, sdebet, scredit')
->from('#__mfo_docums')
->where('(client = '.$db->quote($ulogin).')')
->where('(loan = '.$db->quote($loan).')');
В этой же вьюхе необходимо вывести информацию по договору, чья история операция выводится:
Во вьюхе: $item_loan = $this->get('LoanData'); - далее выводим в HTML содержание $item_loan.
В модели:
public function getLoanData()
{
$ulogin = $this->getState('login');
$loan = $this->getState('loan');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('bdate, edate, term, prc, sm, rest, arest, prest, srest')
->from('#__mfo_loans')
->where('client = '.$db->quote($ulogin))
->where('num = '.$db->quote($loan));
return $db->setQuery($query)->loadObject();
}
Но поскольку типов договоров несколько, для каждого типа договора своя история и своя вьюха, а функция получения информации по договору для всех вьюх одна, произвожу рефакторинг:
В каждой модели, где получаются данные по операциям:
public function getLoanData()
{
$ulogin = $this->getState('login');
$loan = $this->getState('loan');
return MfoHelper::DocumsLoanData($ulogin, $loan);
}
В хелпере:
public static function DocumsLoanData($ulogin, $loan)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('bdate, edate, term, prc, sm, rest, arest, prest, srest')
->from('#__mfo_loans')
->where('client = '.$db->quote($ulogin))
->where('num = '.$db->quote($loan));
return $db->setQuery($query)->loadObject();
}
Насколько это правильно? Иди же необходимо непосредственно из вьюхи вызывать метод в хелпере, который сам дернет параметры из реквеста?
(код не проверен, прямо сюда писал)