1С-Битрикс — перенос id элементов с одного сайта на другой

04.09.2021  10:27

При переделке сайта был создан новый инфоблок с товарами и у всех элементов id стали другими. Потребовалось перенести id товаров с одного сайта на другой. Скрипт экспорта товаров в csv:

$file = $_SERVER["DOCUMENT_ROOT"].'/scripts/export_id.csv';
$fp = fopen($file, 'w');
foreach ($exportArr as $fields) {
    fputcsv($fp, $fields, ";");
}
fclose($fp);
$exportArr[] = Array(
		0 => "ID",
		1 => "XML_ID",
	);
$IBLOCK_ID = 29;// id каталога товаров
$filterFields = Array(
    0 => "ID",
    1 => "XML_ID",
);
$arFilter = Array(
   "IBLOCK_ID"=>$IBLOCK_ID,
);
$res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter, false, false, $filterFields);
while ($ar_fields = $res->GetNext()){
	$exportArr = Array();
	$exportArr[] = Array(
		0 => $ar_fields["ID"],
		1 => $ar_fields["XML_ID"],
	);
	$c++;
$fp = fopen($file, 'a');
foreach ($exportArr as $fields) {
    fputcsv($fp, $fields, ";");
}
fclose($fp);
}


Скрипт импорта (id сохраняются в отдельное свойство):
$IBLOCK_ID = 71;// id каталога товаров
$row = 1;
$c = 0;
$c_err = 0;
$file_csv = $_SERVER["DOCUMENT_ROOT"]."/scripts/export_id.csv";
if (($handle = fopen($file_csv, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 2000, ";")) !== FALSE) {
        $num = count($data);
        $row++;
		$id = $data[0];
		$xml_id = $data[1];
		if(!empty($id) && !empty($xml_id)){
			$filterFields = Array(
				0 => "ID",
				1 => "IBLOCK_ID",
				2 => "XML_ID",
				3 => "PROPERTY_ID_OLD",
			);
			$arFilter = Array(
				"IBLOCK_ID"=>$IBLOCK_ID,
				"XML_ID" => "".$xml_id."",
				"ACTIVE" => "Y",
			);
			$res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter, $filterFields);
			if ($ar_fields = $res->GetNext()) {
				$arProps = Array(
					"ID_OLD" => $id, 
				);
				CIBlockElement::SetPropertyValuesEx($ar_fields["ID"], $IBLOCK_ID, $arProps);
				$c++;
			}
			else $c_err ++;//echo 'not found';exit;
		}
	}
}
echo 'Товаров обновлено: '.$c.'
'; echo 'Товаров не найдено: '.$c_err.'
';
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье или нужно реализовать доработки по программной части? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670), Telegram (@panevin_ru) или перепиской в ВК.
1000 р./час. Часовой пояс — московский.






Помогла статья? На поездку на море (Охотское):


перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 72  PHP 85  web-программирование 110  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю-:
Имя


email (не публикуется)