[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); ?> |