Массовое изменение свойства элементов инфоблока в Битрикс

Бывает необходимость изменить какое-либо свойство элемента массово. Для этого есть в Маркетплейс решения, которые упрощают работу, но нам ведь этого мало. Хочется сделать своими руками и бесплатно, тем более, что интернет всегда под рукой и кто-то же должен был уже это делать и бескорыстно поделиться с коллегами :)

Если вы хоть чуть-чуть читаете php скрипты и работаете с Битриксом, то далее вам все будет ясно и понятно.

Создаем файлик в корне сайта например script.php, в него добавляем код, модифицируем его под свои параметры и запускаем http://сайт.ru/script.php

Этот код изменяет код в дате активности элементов:


require($_SERVER["DOCUMENT_ROOT"]. "/bitrix/header.php");


//Подключаем модуль работы с инфоблоками
  CModule::IncludeModule('iblock');


//Уточняем какой будем использовать инфоблок
  $arFilter = array(
  'IBLOCK_ID' => 4,
  );
  
//Получаем массив всех элементов
  $res = CIBlockElement::GetList(false, $arFilter, array('IBLOCK_ID','ID'));


//Перебираем все элементы инфоблока и записываем в массив их IDшники
  while($el = $res->GetNext()):
  echo $arElementsID[] = $el['ID'];
  endwhile;


//Получаем ID и дату активнсти у каждого элемента в массив
  //заменяем 2020 года на 2021
  //и пишем новый массив, где индекс будет ID элемента, а значение - Дата активности
  foreach($arElementsID as $key):
  $arFilter = array(
  'IBLOCK_ID' => 4,
  'ID' => $key
  );
  $res = CIBlockElement::GetList(false, $arFilter, array('ID','DATE_ACTIVE_FROM'));
  $key = $res -> Fetch();
  $arElementsData[$key['ID']] = str_replace('2015','2016', $key['DATE_ACTIVE_FROM']);
  endforeach;


//Обновляем поле "Дата активности" у каждого элемента
  foreach($arElementsData as $key => $value):
  $ELEMENT_ID = $key;
  $cbe = new CIBlockElement;
  $cbe -> Update($ELEMENT_ID, array('DATE_ACTIVE_FROM' => $value));
  if($cbe): echo "OK!
"; else: echo "Ошибка!
"; endif; endforeach; require($_SERVER["DOCUMENT_ROOT"]. "/bitrix/footer.php");


Этот код изменяет сортировку в элементах выбранных по свойству:


 require($_SERVER["DOCUMENT_ROOT"]. "/bitrix/header.php");


//Подключаем модуль работы с инфоблоками
  CModule::IncludeModule('iblock');


//Уточняем какой будем использовать инфоблок и элементы с каким свойством нам нужны
  $arFilter = array(
  'IBLOCK_ID' => 4,
  'PROPERTY_КОД_СВОЙСТВА' => "SUP",
  );
  
//Получаем массив всех элементов
  $res = CIBlockElement::GetList(false, $arFilter, array('IBLOCK_ID','ID'));


//Перебираем все элементы инфоблока и записываем в массив их IDшники
  while($el = $res->GetNext()):
  $arElementsID[] = $el['ID'];
  endwhile;
  //echo '
'.print_r($arElementsID).'
'; //Получаем ID и сортировку у каждого элемента в массив //заменяем 100 на 50 //и пишем новый массив, где индекс будет ID элемента, а значение - Сортировка foreach($arElementsID as $key): $arFilter = array( 'IBLOCK_ID' => 4, 'ID' => $key ); $res = CIBlockElement::GetList(false, $arFilter, array('ID','SORT')); $key = $res -> Fetch(); $arElementsData[$key['ID']] = str_replace('100','50', $key['SORT']); endforeach; //Обновляем поле "Сортировка" у каждого элемента foreach($arElementsData as $key => $value): $ELEMENT_ID = $key; $cbe = new CIBlockElement; $cbe -> Update($ELEMENT_ID, array('SORT' => $value)); if($cbe): echo "OK!
"; else: echo "Ошибка!
"; endif; endforeach; require($_SERVER["DOCUMENT_ROOT"]. "/bitrix/footer.php");

Денис Бунаков

C 2012 года разрабатываю и поддерживаю сайты на 1С Битрикс. У меня вы можете заказать услуги по разработки или поддержке сайта на битриксе

Массовое изменение свойства элементов инфоблока в Битрикс