Преобразование строковых свойств в список
CModule::IncludeModule("iblock");
$CIBlockPropertyEnum = new CIBlockPropertyEnum;
$id = array();
$set = array();
$setEnum = array();
$iblockId = 4; #id инфоблока
$propId = 129; #id свойства
$oldPropCode = "property_distance_railway";
$newPropCode = "property_distance_railway_1";
$tmpList = CIBlockElement::GetList(array(),array("IBLOCK_ID"=>$iblockId),false,false,array("ID"));
while($tmp = $tmpList->Fetch())
$id[] = $tmp["ID"];
unset($tmpList);
unset($tmp);
$property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>$iblockId, "CODE"=> $newPropCode));
while($enum_fields = $property_enums->GetNext())
$setEnum[$enum_fields["VALUE"]] = $enum_fields["ID"];
unset($property_enums);
unset($enum_fields);
unset($setEnum);
if(count($id)>0)
{
foreach($id as $element)
{
$db_props = CIBlockElement::GetProperty($iblockId, $element, array("sort" => "asc"), Array("CODE"=>$oldPropCode));
if($ar_props = $db_props->Fetch())
{
if(strlen($ar_props["VALUE"])>0)
$set[$ar_props["VALUE"]][] = $element;
}
}
unset($id);
unset($element);
unset($db_props);
unset($ar_props);
foreach($set as $count=>$items)
{
$updateEnumId = false;
# если уже такое свойство есть
if(isset($setEnum[$count]))
$updateEnumId = $setEnum[$count];
else
{
if($PropID = $CIBlockPropertyEnum->Add(Array('PROPERTY_ID'=> $propId, 'VALUE'=>$count)))
$updateEnumId = $PropID;
}
foreach($items as $item)
CIBlockElement::SetPropertyValueCode($item, $newPropCode , $updateEnumId);
}
}
|
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».