ПРИМЕЧАНИЕ. Я добавляю это в новом ответе, чтобы использовать формат кода.
Как было сказано, проблема в multiselect атрибутах с использованием пользовательской исходной модели.
Решение:
Перепишите класс
Mage_Catalog_Model_Resource_Product_Indexer_Eav_Source
Переопределить метод:
_prepareMultiselectIndex
добавить этот код после заполнения массива $ options кодом по умолчанию (проверьте строку 200 в исходном файле)
foreach($attrIds as $attId){
if( ! isset($options[$attId])){
$options[$attId] = $this->_getOptionsFromSourceModel($attId);
}
}
добавить этот метод тоже:
protected function _getOptionsFromSourceModel($attId)
{
$options = array();
/** @var Mage_Eav_Model_Entity_Attribute_Abstract $attribute */
$attribute = Mage::getResourceSingleton('catalog/product')->getAttribute($attId);
/** @var Mage_Eav_Model_Entity_Attribute_Source_Abstract $source */
$source = $attribute->getSource();
$sourceOptions = $source->getAllOptions();
if($sourceOptions){
foreach($sourceOptions as $sourceOption){
if(isset($sourceOption['value'])){
$options[$sourceOption['value']] = true;
}
}
}
return $options;
}
Я не мог найти менее навязчивый способ исправить это.