Редактировать

Массовая установка свойства типа “Список” в нужное значение

Задача

Требуется установить свойство типа “Список” всем элементам инфоблока в определенное значение.

Решение

<?
// переменные
$IBLOCK_ID = 14;
$PROP_CODE = 'SAYT_OPTOVIK';
$PROP_VALUE = 'Да';

// найдем код значения св-ва типа "Список"
$dbPropVals = CIBlockProperty::GetPropertyEnum($PROP_CODE, [], ["IBLOCK_ID"=>$IBLOCK_ID, "VALUE"=>$PROP_VALUE]);
$arPropVal = $dbPropVals->GetNext();

\Bitrix\Main\Diag\Debug::dump($arPropVal);

// установим всем элементам с неустановленным свойством значение найденное выше

$arFilter = [
    'IBLOCK_ID' => $IBLOCK_ID,
];

$arSelect = [
    'ID',
    'NAME',
    'PROPERTY_'.$PROP_CODE,
];

$dbEls = CIBlockElement::GetList(['ID' => 'ASC'], $arFilter, false, false, $arSelect);

while ($arEl = $dbEls->GetNext()) {
    if(!$arEl['PROPERTY_'.$PROP_CODE.'_VALUE'] && $arPropVal['ID']) {
        CIBlockElement::SetPropertyValues($arEl['ID'], $IBLOCK_ID, $arPropVal['ID'], $PROP_CODE);
    }
}
?>