Для того, чтобы можно было в 1С устанавливать специальные цены для товаров, и выгружать их на сайт через автоматический обмен, я в созданный мною, описанный выше, класс
Shop_Item_Import_Cml_Observer добавил еще один статический метод.
static public function onBeforeImportShopItemPrice($object, $args)
{
$oShopItem = $args[0];
$packageOfProposals = $args[1];
$oProposal = $args[2];
$oPrice = $args[3];
$sPriceType = strval( $oPrice->ИдТипаЦены );
$sGUID = strval( $oProposal->Ид );
// Если у товара есть специальные цены
$aSpecials = $object->xpath($oPrice, 'Специальные/Специальная');
if (is_array($aSpecials) && count($aSpecials) > 0)
{
// Сначала удаляем все его специальные цены
$oShopItem->Shop_Specialprices->deleteAll(FALSE);
// Сохраняем переданные специальные цены
foreach($aSpecials as $oSpecial )
{
$min = strval( $oSpecial->МинКол );
$max = strval( $oSpecial->МаксКол );
$percent = strval( $oSpecial->Процент );
$price = strval( $oSpecial->Значение );
$oShop_Specialprices = Core_Entity::factory( "Shop_Specialprice" );
$oShop_Specialprices->shop_item_id($oShopItem->id)
->min_quantity($min)
->max_quantity($max)
->percent($percent)
->price($price)
->save();
}
}
return TRUE;
}
Ну и, конечно же, для того, чтобы это работало, соответствующим образом была доработана 1С.