Dima_So
@Dima_So
Experientia est optima magistra

Замена цены и доступного количества при выгрузке?

На сайте есть 2 инфоблока: Основной (со структурой и товарами) и вспомогательный (тут только товары)

Смысл в том что, основной каталог это витрина сайта, а служебный нужен для изменения остатков и цен.

При импорте в служебный инфоблок мне нужно взять из него цену и остаток товара и по артикулу найти такойже в основном и подставить ему эти занчения

AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OrelBase");

function OrelBase(&$arFields)
{
	$price = CPrice::GetBasePrice($arFields['ID']);
	$count = CCatalogProduct::GetByID($arFields['ID']);
 	$item_orel = array(
		'NAME' => $arFields['NAME'],
		'ID' => $arFields['ID'],
		'ARTICUL' => $arFields['PROPERTY_VALUES']['9728']['271613275']['VALUE'],
		'PRICE_VALUE' => $price['PRICE'],
		'COUNT' => $count['QUANTITY']
	 );

 	
	AddMessage2Log("<br/><br/><pre>".print_r($item_orel,true)."</pre><br/><br/>", "test");
   $res_tula = CIBlockElement::GetList(array("SORT"=>"ASC"),array('IBLOCK_ID' => 21,'PROPERTY_CML2_ARTICLE' => $item_orel['ARTICUL']), false,false, array("NAME", "ID", "PROPERTY_CML2_ARTICLE"));
	while($ob = $res_tula->GetNextElement())
	{
		$arFields = $ob->GetFields();
		//print_r($arFields);
		$price = CPrice::GetBasePrice($arFields['ID']);
		$count = CCatalogProduct::GetByID($arFields['ID']);

		/*меням цену*/

		$PRODUCT_ID = $arFields['ID'];
		$PRICE_TYPE_ID = 1;

		$arFields_price = Array(
		    "PRODUCT_ID" => $PRODUCT_ID,
		    "CATALOG_GROUP_ID" => $PRICE_TYPE_ID,
		    "PRICE" => $item_orel['PRICE_VALUE'],
		    "CURRENCY" => "RUB"
		);

		$res = CPrice::GetList(
		        array(),
		        array(
	                "PRODUCT_ID" => $PRODUCT_ID,
	                "CATALOG_GROUP_ID" => $PRICE_TYPE_ID
	            )
	    );

		if ($arr = $res->Fetch())
		{
		    CPrice::Update($arr["ID"], $arFields_price);
		}
		else
		{
		    CPrice::Add($arFields_price);
		}
		/*меням цену конец*/

		/*меняем количество*/

		CCatalogProduct::Update($arFields['ID'], array('QUANTITY' => $item_orel['COUNT']));

		/*меняем количество конец*/
	}

}


При простом сохранении ресурса в админке замена проходит через раз, а при импорте вообще не происходит
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
@run182
Поставь логирование и отследи.
Добавь после
function OrelBase(&$arFields)
{

file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log.txt", json_encode($arFields));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы