Иногда требуется программно обновить пользовательское свойство у товаров в CMS Bitrix.
Например, если было добавлено новое обязательное поле.
Ниже приведенный код, берет все товары, перебирает их и выставляет значения для пользовательского свойства
PUBLISHED
в значение
Да
Важно:
Нудно использовать метод
SetPropertyValuesEx
вместо
SetPropertyValues
иначе все не переданные пользовательские поля будут обнулены.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
require_once($_SERVER['DOCUMENT_ROOT']. "/bitrix/modules/main/include/prolog_before.php");
//CModule::IncludeModule("catalog");
CModule::IncludeModule("iblock");
$IBLOCK_ID = 1;
$PRODUCT_ID = 5708; // Ограничение только для одного тестового товара
$PROPERTY_CODE = 'PUBLISHED'; // код свойства
$PROPERTY_VALUE = 235; // Нужно использовать ID от значения "Да" (Не "y" и не "Да")
$res = CIBlockElement::GetList(array(), array('IBLOCK_ID' => 1), false, false, array('ID', 'NAME'));
while($row = $res->Fetch())
{
if($row['ID'] == $PRODUCT_ID)
{
echo $row['NAME']. '<br />';
// $aProp = CIBlockElement::GetByID($row['ID'])->GetNextElement()->GetProperties();
CIBlockElement::SetPropertyValuesEx($row['ID'], $IBLOCK_ID, array($PROPERTY_CODE => $PROPERTY_VALUE));
}
}