[spoiler]
$IBLOCK_ID = 6;
$arFilter = Array('IBLOCK_ID'=>$IBLOCK_ID);
$db_list = CIBlockSection::GetList(Array('ID'=>'ASC'), $arFilter, false, array('XML_ID', 'NAME', 'IBLOCK_SECTION_ID'));
while($ar_result = $db_list->GetNext())
{
$arSec[$ar_result['ID']] = $ar_result;
$arSec_[$ar_result['XML_ID']] = $ar_result;
}
$arSelect = Array("ID", 'IBLOCK_ID', "NAME", 'XML_ID', 'IBLOCK_SECTION');
$arFilterElem = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>'Y', '>TIMESTAMP_X'=>'13.04.2020'/*, '>ID'=>22714*/);
$res = CIBlockElement::GetList(Array("ID" => "ASC"), $arFilterElem, false, false, $arSelect);
while($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
if(strlen($arFields["XML_ID"]) > 35) {
$groups = CIBlockElement::GetElementGroups($arFields['ID'], true);
while ($ar_group = $groups->Fetch()) {
$arRes[$ar_group["XML_ID"]]['NAME'] = $ar_group['NAME'];
$arRes[$ar_group["XML_ID"]]['IBLOCK_SECTION_ID'] = $arSec[$ar_group['IBLOCK_SECTION_ID']]['XML_ID'];
$arRes[$ar_group["XML_ID"]]['ELEMENTS'][$arFields["XML_ID"]] = $arFields["NAME"];
}
}
}
foreach ($arSec_ as $key_ => &$sec_){
if($arRes[$key_]){
$sec_ = $arRes[$key_];
}else{
$sec_['IBLOCK_SECTION_ID'] = $arSec[$sec_['IBLOCK_SECTION_ID']]['XML_ID'];
}
}
$text = '<?xml version="1.0" encoding="UTF-8"?><Разделы><Раздел>
<Ид>a816e0f2-aa18-4a7f-bf78-a6d06e4f7beb</Ид>
<Наименование>f2cef05b-aa68-42c8-a094-762e4acb88e3</Наименование>
<ЭтоИнфоблок>true</ЭтоИнфоблок>
<ИдРодителя/>
</Раздел>';
foreach ($arSec_ as $key => $sec){
$parent = ($sec['IBLOCK_SECTION_ID'] != '')? $sec['IBLOCK_SECTION_ID'] : 'a816e0f2-aa18-4a7f-bf78-a6d06e4f7beb';
$text .= '<Раздел>
<Ид>' . $key . '</Ид>
<Наименование>' . $sec['NAME'] . '</Наименование>
<ЭтоИнфоблок>false</ЭтоИнфоблок>
<ИдРодителя>' . $parent . '</ИдРодителя>
';
if($sec['ELEMENTS']) $text .= '<Номенклатура>';
foreach ($sec['ELEMENTS'] as $key_el => $elem){
$text .= '<ЭлементНоменклатуры>'.$key_el.'</ЭлементНоменклатуры>';
}
if($sec['ELEMENTS']) $text .= '</Номенклатура>';
$text .= '</Раздел>';
}
$text .='</Разделы>';
file_put_contents($_SERVER['DOCUMENT_ROOT']."/dev/1c_tree.xml", $text);
?> |