Так поэтому и получается лажа. Ты же создаешь только объекты документа (ShopmodxResourceProduct) (что является расширенным modResource). А надо еще и ShopmodxProduct (именно у него поля sm_price, sm_currency и т.п.). К слову, именно ShopmodxProduct — и является основным объектом товара. Он может существовать и без документа, и расчет на то, что если магазин будет действительно большим (миллионы и более товаров), тогда скорее всего будут только объекты товаров с индивидуальными полями, роутером и т.п.
Но в штатном режиме лучше так не создавать такие объекты через newObject. Через процессоры гораздо правильней и надежней, так как в процессорах много логики может быть прописано, которой может не быть в самом классе объекта.