@redesupar

Как массово изменить только одно свойство, а остальные оставить в инфоблоке битрикса?

Не могу понять, почему при массовой смене одного свойства, остальные свойства просто стираются?
CModule::IncludeModule( 'iblock' );


$arFilter = array(
	'IBLOCK_ID' => 5
);

$res = CIBlockElement::GetList( false, $arFilter, array( 'IBLOCK_ID', 'ID', 'PROPERTY_902', 'IBLOCK_SECTION_ID' ) );


while ( $el = $res->GetNext() ):


	$PROP = array();
	$PROP[902] = $el['IBLOCK_SECTION_ID'];

	$arLoadProductArray = Array( 
		"PROPERTY_VALUES" => $PROP,
	);

	$ELEMENT_ID = $el['ID'];
	$cbe = new CIBlockElement;
	$cbe->Update( $ELEMENT_ID, $arLoadProductArray );
	if ( $cbe ): echo "OK!
";
	else :
		echo "FAIL!
";
	endif;


endwhile;
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@samsepi0l
Читайте пожалуйста внимательно документацию.
https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
Если массив PROPERTY_VALUES задан, то он должен содержать полный набор значений свойств для данного элемента, т.е. если в нем будет отсутствовать одно из свойств, то все его значения для данного элемента будут удалены.

Для изменения одного свойства, нужно использовать метод CIBlockElement::SetPropertyValuesEx
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы