Обновление цен торговых предложений с учётом раздела

Обновление цен торговых предложений с учётом раздела

Просмотров: 2184
Обновление цен торговых предложений по разделу каталога инфоблока
  • Нам понадобится свойство PROPERTY_CML2_LINK где хранится ID основной карточки вариативного товара и IBLOCK_SECTION_ID - раздел основного товара.
  • Вытаскиваем элементы торговых предложений с помощью CIBlockElement::GetList
  • Получаем данные о разделе CIBlockElement::GetByID($ar_Element["PROPERTY_CML2_LINK_VALUE"])
  • Формируем массив выборку с увязкой к разделу и данным элемента
  • Получаем данные о ценах CPrice::GetList
  • Обновляем цены с нужной наценкой CPrice::Update
Скачать пример

 $infoblock = 3; // Инфоблок 
//Вытаскиваем элементы
$arSelectElems = array (
 "ID",
 "PROPERTY_CML2_LINK"
 );
 $arFilterElems = array (
 "IBLOCK_ID" => $infoblock
);
 $arSortElems = array (
 "NAME" => "ASC"
 );
 $arResult["ELEMENTS"] = array();
 $rsElementElement = CIBlockElement::GetList(array('left_margin' => 'asc'), $arFilterElems, false, false, $arSelectElems);
 while ( $ar_Element = $rsElementElement->Fetch() ) {
 $res = CIBlockElement::GetByID($ar_Element["PROPERTY_CML2_LINK_VALUE"]);
 if($ar_res = $res->GetNext())
 {
 $ar_res_sectionID = $ar_res['IBLOCK_SECTION_ID'];
 }
//выборка с учётом раздела
 $ar_Resu[$ar_res_sectionID][] = $ar_Element;
}
 foreach ($ar_Resu[220] as $section) {
     $db_res_mrc = CPrice::GetList(
 array(),
 array(
 "PRODUCT_ID" => $section["ID"],
 "CATALOG_GROUP_ID" => 1
 )
 );
 //[PRODUCT_ID] => это торговое предложение
 if ($ar_res_mrc = $db_res_mrc->Fetch())
 {
//цена с наценкой
 $price_mrc_update = ceil($ar_res_mrc['PRICE'] + ($ar_res_mrc['PRICE']*20/100));
 CPrice::Update($ar_res_mrc['ID'], array("PRODUCT_ID" =>$ar_res_mrc['PRODUCT_ID'],"PRICE" => $price_mrc_update , "CURRENCY" => "RUB"));

Ещё статьи:

15.11.2025 Обзор на маркетплейс модулей купить в 1 клик
Смотрел что есть из модулей купить в 1 клик на маркетплейс. Смотреть начал, потому что отобранные ранее модули в моём списке перестали существовать.
Простой поиск показал, что всё печально, модулей, которых позиционируют себя как функционал "купить в 1 клик", оказалось всего три:

26.10.2025 Аспро нюансы копий и языковых версий
Одному клиенту пришлось долго объяснять нюансы создания копий и языковых версий на аспро.

06.10.2025 Ошибка Event handler error: could not invoke
Исходные данные
После обновления битрикс возникла проблема с админкой

© 2015-2025 Web админ
Связаться по WhatsApp