Как сделать импорт в Битрикс через csv файл
Создаем новый инфоблок (в данном примере его id равен 2)
Создаем у разделов этого инфоблока пользовательское свойство UF_ID_NUM (там будут храниться id)
Скрипт для импорта категорий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
CModule::IncludeModule('iblock'); $row = 0; $bs = new CIBlockSection; $IBLOCK_ID = 2; if (($handle = fopen($_SERVER["DOCUMENT_ROOT"]."/upload/import/categorys_14.csv", "r")) !== FALSE) { while (($value = fgetcsv($handle, 1000, ";")) !== FALSE) { $row++; $UF_ID_NUM = $value[0]; $SECTION_NAME = $value[1]; $db_list = CIBlockSection::GetList(false, $arFilter = Array('IBLOCK_ID' => $IBLOCK_ID, "UF_ID_NUM" => $value[2]), false, false, false); while($ar_result = $db_list->GetNext()){ $IBLOCK_SECTION_ID = $ar_result["ID"]; } $arFields = Array( "ACTIVE" => "Y", "UF_ID_NUM" => $UF_ID_NUM, "IBLOCK_SECTION_ID" => $IBLOCK_SECTION_ID, "IBLOCK_ID" => $IBLOCK_ID, "NAME" => $SECTION_NAME ); if($ID > 0) { $res = $bs->Update($ID, $arFields); } else { $ID = $bs->Add($arFields); $res = ($ID=0); } if(!$res) echo $bs->LAST_ERROR; } fclose($handle); echo "Файл успешно импортирован!"; } else { echo "Oшибка!!!"; } |
Скрипт для импорта элементов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
CModule::IncludeModule('iblock'); $el = new CIBlockElement; $IBLOCK_ID = 2; $row = 0; if (($handle = fopen($_SERVER["DOCUMENT_ROOT"]."/upload/import/tovary_40.csv", "r")) !== FALSE) { while (($value = fgetcsv($handle, 1000, ";")) !== FALSE) { $row++; $db_list = CIBlockSection::GetList(false, $arFilter = Array('IBLOCK_ID' => $IBLOCK_ID, "UF_ID_NUM" => $value[4]), false, false, false); while($ar_result = $db_list->GetNext()){ $IBLOCK_SECTION_ID = $ar_result["ID"]; } $PROP = array(); $PROP[102] = $value[0]; $PROP[103] = $value[1]; $arLoadProductArray = Array( "IBLOCK_SECTION_ID" => $IBLOCK_SECTION_ID, "IBLOCK_ID" => $IBLOCK_ID, "PROPERTY_VALUES"=> $PROP, "NAME" => $value[2], "CODE" => $value[3] ); if($PRODUCT_ID = $el->Add($arLoadProductArray, false, false, false)) { echo "New ID: ".$PRODUCT_ID; } else { echo "Error: ".$el->LAST_ERROR; } } fclose($handle); echo "Файл успешно импортирован!"; } else { echo "Oшибка!!!"; } |
Зараз лучше импортировать не более 500 категорий и не более 1000 элементов. Классная программа для разделения большого CSV файла на более мелкие «csv-splitter»:скачать
Пример csv для импорта категорий: скачать
Пример csv для импорта элементов: скачать