Рассказываю как решил проблему.
Сравнив два запроса (при котором все работает и при котором не работает) обнаружил, что группировка идет по полю
GROUP BY dataTmpId.
Анализ стека вызовов ничего не дал. Тогда поиском по серверу нашел, где происходит изменение группировки:
modules/shop/controller/show.php
Цитата:
if ($this->modificationsGroup)
{
$this->_Shop_Items
->queryBuilder()
->select(array(Core_QueryBuilder::expression('IF(`shop_items`.`modification_id` > 0, `shop_items`.`modification_id`, `shop_items`.`id`)'), 'dataTmpId'))
->clearGroupBy()
->groupBy('dataTmpId');
}
В ТДС магазина же присутствовал блок, который как раз при использовании фильтра и вызывал срабатывание условия:
Цитата:
// При фильтрации модификации выводятся на уровне товаров
if (count($Shop_Controller_Show->getFilterProperties()) || count($Shop_Controller_Show->getFilterPrices()) || $Shop_Controller_Show->producer)
{
$Shop_Controller_Show->modificationsList(TRUE)->modificationsGroup(TRUE);
}
Комментирование этого блока решила проблему.