Установить значение свойства в зависимости от другого свойства

Установить программно значение свойства типа список в зависимости от другого свойства типа строка в init.php.

Проделать подобное мне понадобилось на сайте с большим количеством товаров и для каждого из них нужно было заполнить новое свойство. Новое свойство зависело от имеющегося. И поэтому я использовала нижеследующий код:

	 <?php if(CModule::IncludeModule('iblock')) {
	    $arSort= Array("NAME"=>"ASC");
	    $arSelect = Array("ID", "IBLOCK_ID", "NAME");
	    $arFilter = Array("IBLOCK_ID" => 33);
	    $res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
	    while($ob = $res->GetNextElement()){
	      $arFields = $ob->GetFields();
	      $arProps = $ob->GetProperties();
	      $hh = $arProps["PLOSHAD"]["VALUE"];    
	    if($hh<=20) {
	       CIBlockElement::SetPropertyValues($arFields["ID"], 33, 164, "SPISOK_PLOSHAD");
	    }
	    else if($hh>20 && $hh<=25) {
	       CIBlockElement::SetPropertyValues($arFields["ID"], 33, 165, "SPISOK_PLOSHAD");
	    }
	    else if($hh>25 && $hh<=35) {
	       CIBlockElement::SetPropertyValues($arFields["ID"], 33, 166, "SPISOK_PLOSHAD");
	    }
	    else if($hh>35 && $hh<=50) {
	       CIBlockElement::SetPropertyValues($arFields["ID"], 33, 167, "SPISOK_PLOSHAD");
	    }
	    else if($hh>50 && $hh<=70) {
	       CIBlockElement::SetPropertyValues($arFields["ID"], 33, 168, "SPISOK_PLOSHAD");
	    }
	    else if($hh>70 && $hh<=90) {
	       CIBlockElement::SetPropertyValues($arFields["ID"], 33, 169, "SPISOK_PLOSHAD");
	    }
	    else {
	       CIBlockElement::SetPropertyValues($arFields["ID"], 33, 170, "SPISOK_PLOSHAD");
	    }
	    }
	 }?>

В переменную $hh попадает текущее значение свойства PLOSHAD и в зависимости от этого значения, свойству SPISOK_PLOSHAD присваивается значение по id из списка с помощью функции SetPropertyValues.


bitrixone © 2024