На стороннем магазине столкнулся вот с таким случаем: некоторые товары (которые раньше были заведены как тип Товар) были переделаны в обычные документы, то есть их тип ресурса был изменен на Документ. Вот этого нельзя делать. Основная причина заключается в том, что когда создается новый документ-товар, для него создается сопутствующий объект ShopmodxProduct. И этот допобъект не только содержит необходимые данные, но и является главным критерием для отличия товаров от основных документов, то есть в процессоре web/catalog/products/getdata таблица товаров джоинится к выборке и если для документа есть запись в этой таблице, значит этот документ — товар. По этой причине на данном сайте документов-товаров сейчас меньше десятка, а выборка товаров возвращает 5 десятков товаров. Табличный редактор товаров тоже видит их пять десятков.
Для тех, кто все-таки эту ошибку допустил, публикую скрипт для чистки (удаления лишних записей товаров). Имейте ввиду, что записи с этими товарами так же удалятся из заказов.
<?php
print '<pre>';
ini_set('display_errors', 1);
$q = $modx->newQuery('ShopmodxProduct');
$q->innerJoin('modResource', 'Resource');
$q->where(array(
"Resource.class_key:in" => array("modDocument", "modWebLink"),
));
print $modx->getCount('ShopmodxProduct', $q);
foreach($modx->getIterator('ShopmodxProduct', $q) as $product){
$product->remove();
}