dikey58
@dikey58
Самоучка - web-разработчик

Как массово изменить коэф. ед. измерения у товаров на десятичное значение?

На рандомной странице, я сделал такой код:
if (CModule::IncludeModule("catalog")) {
 $get_list = CCatalogProduct::GetList(array('SORT'=>'ASC'), array('MEASURE'=> 8, "%ELEMENT_NAME" => "Портьера"));											
 while($kg_result = $get_list->GetNext()) {
  $ed_list = CCatalogMeasureRatio::GetList(array(), array('PRODUCT_ID'=>$kg_result['ID']), false, false, array());     
   while($ed_result = $ed_list->GetNext()) {										
    CCatalogMeasureRatioAll::update($ed_result['ID'], array('PRODUCT_ID'=>$kg_result['ID'], 'RATIO' => 0.5));   
   }
  }     
}

Но это срабатывает только если я Ratio устанавливаю любым значением больше или равно 1.
А мне надо установить 0.5.
При чем, после установки у товара вручную на 0.5, а затем кодом обновить у всех 1, а затем обратно 0.5 - срабатывает только с тем товаром у кого было установлено 0.5 вручную ранее.
Полтергейст какой-то.
Как сделать?
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
@PetrPo
Сначала получаешь id-ники товаров, у которых надо изменить коэффициент (я так понимаю это твой первый запрос), потом
\Bitrix\Main\Loader::includeModule('catalog');

$productIds = [323, 316];
$ratio = '0.5';

$iterator = \Bitrix\Catalog\MeasureRatioTable::getList([
	'select' => ['ID'],
	'filter' => ['PRODUCT_ID' => $productIds]
]);

while($row = $iterator->fetch()) {
	\Bitrix\Catalog\MeasureRatioTable::update($row['ID'], ['RATIO' =>$ratio]);
}

вместо $productIds подставляешь свои id-ники
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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