Битрикс выгрузить все элементы вместе со свойствами в файл
0
27.08.202511:1427.08.2025 11:14:00
Этот скрипт выгружает все элементы инфоблока в файл 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;
|
27.08.202511:1427.08.2025 11:14:00