Воротников Игорь Частный Веб-разработчик bitrix блог


Автоматически установить цену при обмене с 1С

Допустим стоит задача при выполнении обмена с 1С, повлиять на конечные цены которые попадут на сайт после завершения обмена. Для модификации цены воспользуемся событием OnSuccessCatalogImport1C - это стандартное событие, вызывается после окончания обмена одним XML-файлом. Создадим функцию OnBeforeAllPriceUpdateHandler и поместим данный код в файл
/bitrix/php_interface/init.php
если данного файла нет в вашем проекте просто создайте его по этому пути. Подробнее о файле init.php в этой статье Не забудьте указать ID нужного информационнного блока. Обратите внимание, что в данном примере цены просто обнуляются, в переменную $price вы должны положить свое значение. Данное значение цены будет обновлено через API битрикс:

AddEventHandler('catalog', 'OnSuccessCatalogImport1C', 'OnBeforeAllPriceUpdateHandler');
   function OnBeforeAllPriceUpdateHandler()
    {
		Cmodule::IncludeModule("catalog");
		Cmodule::IncludeModule("iblock");
		Cmodule::IncludeModule("sale");


	$resIblock = CIBlockElement::GetList(
		array('ID' => 'ASC'), 
		array(
			'IBLOCK_ID' => 1 // id информационного блока 1С_CATALOG
		),
		false, 
		false,
		array("ID")
	);
	$price = 0; // тут указываем что хотим сделать с ценой, например сконвертировать по текущему курсу полученные из 1С значение цены
	while($arID = $resIblock->Fetch()){
		$arPriceFields = array(
            "PRODUCT_ID" => $arID['ID'],
            "PRICE" => $price, 
			"CATALOG_GROUP_ID" => 1,
            "CURRENCY" => 'RUB',
        );
		$res = CPrice::GetList(
        	array(), 
        	array('PRODUCT_ID' => $arID['ID']),
        	false,
        	array('nTopCount' => 1),
			array()
        );
    if($res){
    	CPrice::Update($arID["ID"], Array("PRICE" => $arPriceFields));
    } else {
    	CPrice::Add($arPriceFields);
    }
	}	
	}

Возврат к списку

Воротников Игорь Частный Вебразработчик
Разработка сайтов bitrix от честного веб программиста Воротникова Игоря
141321
Россия
Центральный
Москва
ул. Вертолетчиков д 13
84950032519
admin@vorlis.ru