Как можно получить значение ['DEPTH_LEVEL'] равное 1 из пути, полученного с помощью функции CIBlockSection::GetNavChain?
Чтобы получить корневой раздел элемента инфоблока в Битриксе, можно воспользоваться функцией CIBlockSection::GetNavChain, а затем из полученного пути выбрать первый элемент. Вот пример кода: ```php $sectionId = 10; // ID раздела, для которого нужно получить корневой раздел $navChain = CIBlockSection::GetNavChain(false, $sectionId); $rootSection = $navChain->Fetch(); $rootSectionId = $rootSection['ID']; $rootSectionDepth = $rootSection['DEPTH_LEVEL']; echo "Корневой раздел ID: " . $rootSectionId . ", глубина: " . $rootSectionDepth; ``` В данном примере мы передаем ID раздела в функцию GetNavChain и получаем объект CDBResult. Затем с помощью метода Fetch выбираем первый элемент из пути, который представляет корневой раздел. Затем мы можем получить значение его ID и глубины. Важно отметить, что если у раздела нет подразделов, то его ID и глубина будут совпадать с показателями ['DEPTH_LEVEL'], возвращаемыми при использовании функции CIBlockSection::GetList без дополнительных фильтров.
$select = [ "IBLOCK_ID", "SECTION_ID" => "ID", "SECTION_NAME" => "NAME", "PARENT_ID" => "ROOT_SECTION.ID", "PARENT_NAME" => "ROOT_SECTION.NAME", ];
$iblockId = 12;
$sections = [437, 494, 482];
$entity = \Bitrix\Iblock\Model\Section::compileEntityByIblock($iblockId);
$dbNavChain = $entity::getList([ "select" => $select, "filter" => [ "=IBLOCK_ID" => $iblockId, "ID" => $sections, "=ROOT_SECTION.DEPTH_LEVEL" => 1 ], 'runtime' => [ 'ROOT_SECTION' => [ 'data_type' => $entity, 'reference' => [ '=ref.IBLOCK_ID' => new \Bitrix\Main\DB\SqlExpression('?i', $iblockId), '>this.LEFT_MARGIN' => 'ref.LEFT_MARGIN', ''ref.RIGHT_MARGIN', ] ] ], "order" => [ "ROOT_SECTION.LEFT_MARGIN" => "ASC" ], "cache" => [ "ttl" => 86400 ] ]);
$result = [];
while ($navChain = $dbNavChain->fetch()) { $section = [ "ID" => $navChain["PARENT_ID"], "IBLOCK_ID" => $navChain["IBLOCK_ID"], "NAME" => $navChain["PARENT_NAME"], ];
$result[$navChain["SECTION_ID"]] = $section; }
print_r($result);
Результат: Array ( [437] => Array ( [ID] => 75 [IBLOCK_ID] => 12 [NAME] => Гель-лаки ) [482] => Array ( [ID] => 338 [IBLOCK_ID] => 12 [NAME] => Инструменты ) [494] => Array ( [ID] => 338 [IBLOCK_ID] => 12 [NAME] => Инструменты ) )