Установить программно значение свойства типа список в зависимости от другого свойства типа строка в 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.