Битрикс выгрузить все элементы вместе со свойствами в файл
Иногда нужно быстро выгрузить все элементы инфоблока 1С-Битрикс в CSV-файл для анализа, переноса данных или резервной копии.
Ниже пример PHP-скрипта, который выгружает:
- ID элемента;
- название элемента;
- все активные свойства инфоблока;
- файловые свойства;
- множественные свойства.
Скрипт экспорта элементов инфоблока в CSV
<?php
use Bitrix\Main\Loader;
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (!Loader::includeModule("iblock")) {
die("Модуль Инфоблоки не подключен");
}
$IBLOCK_ID = 55;
$FILE_PATH = $_SERVER["DOCUMENT_ROOT"] . "/upload/export_iblock_{$IBLOCK_ID}.csv";
// Получаем список всех свойств инфоблока
$arProps = [];
$rsProps = CIBlockProperty::GetList(
["SORT" => "ASC"],
["IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y"]
);
while ($arProp = $rsProps->Fetch()) {
$arProps[$arProp["CODE"]] = $arProp;
}
// Заголовки для CSV: ID, NAME + все свойства
$headers = ["ID", "NAME"];
foreach ($arProps as $code => $prop) {
$headers[] = $prop["CODE"];
}
$fp = fopen($FILE_PATH, "w");
fputcsv($fp, $headers, ";");
// Выбираем элементы инфоблока
$arSelect = ["ID", "IBLOCK_ID", "NAME"];
$arFilter = [
"IBLOCK_ID" => $IBLOCK_ID,
"ACTIVE" => "Y"
];
$res = CIBlockElement::GetList(
["ID" => "ASC"],
$arFilter,
false,
false,
$arSelect
);
while ($arItem = $res->GetNextElement()) {
$fields = $arItem->GetFields();
$props = $arItem->GetProperties();
$row = [
$fields["ID"],
$fields["NAME"]
];
foreach ($arProps as $code => $propInfo) {
$value = $props[$code]["VALUE"];
if (empty($value)) {
$row[] = "";
continue;
}
// Если свойство — файл
if ($propInfo["PROPERTY_TYPE"] === "F") {
if (is_array($value)) {
$filePaths = [];
foreach ($value as $fileId) {
$filePath = CFile::GetPath($fileId);
if ($filePath) {
$filePaths[] = $filePath;
}
}
$row[] = implode(",", $filePaths);
} else {
$row[] = CFile::GetPath($value);
}
}
// Если множественное свойство
elseif ($propInfo["MULTIPLE"] === "Y" && is_array($value)) {
$row[] = implode(",", $value);
}
// Обычное свойство
else {
$row[] = $value;
}
}
fputcsv($fp, $row, ";");
}
fclose($fp);
echo "Экспорт завершен. Файл: " . $FILE_PATH;
Что делает скрипт
Скрипт подключает ядро Битрикс, получает список активных свойств инфоблока и последовательно выгружает элементы в CSV-файл.
В результате создается файл:
/upload/export_iblock_55.csv
Где 55 — ID инфоблока.
Настройка ID инфоблока
ID нужного инфоблока указывается в переменной:
$IBLOCK_ID = 55;
Если нужно выгрузить другой инфоблок, достаточно изменить это значение.
Куда сохраняется CSV-файл
Путь к файлу задается здесь:
$FILE_PATH = $_SERVER["DOCUMENT_ROOT"] . "/upload/export_iblock_{$IBLOCK_ID}.csv";
После выполнения скрипта CSV-файл появится в папке:
/upload/
Какие данные выгружаются
В CSV попадают:
IDэлемента;NAMEэлемента;- все активные свойства инфоблока;
- пути к файлам из файловых свойств;
- значения множественных свойств через запятую.
Обработка файловых свойств
Если свойство имеет тип файл, скрипт получает путь к файлу через:
CFile::GetPath($fileId)
Для множественных файловых свойств пути объединяются через запятую.
Обработка множественных свойств
Если свойство множественное, значения объединяются в одну строку:
implode(",", $value)
Это позволяет корректно записать несколько значений в одну ячейку CSV-файла.
Когда пригодится такой экспорт
- перенос данных между сайтами;
- резервное копирование элементов инфоблока;
- анализ свойств в Excel;
- массовая проверка данных;
- подготовка к миграции сайта;
- выгрузка каталога или блога.
Итог
Такой скрипт позволяет быстро выгрузить элементы инфоблока Битрикс в CSV-файл без настройки дополнительных модулей и сложных импортов.
Его удобно использовать как основу для собственных задач экспорта, миграции и анализа данных.
Комментарии