Т.к. подразделения - это инфоблоки, то получить ИДшники всех подразделений внутри искомого можно так:
| Код |
|---|
CModule::IncludeModule('iblock');
$parentDepartmentId = '126'; //ИД подразделения, внутри которого ищем
$IBLOCK_ID = '5'; //ИД инфоблока подразделений
$arParenFilter = Array('IBLOCK_ID'=>$IBLOCK_ID, 'GLOBAL_ACTIVE'=>'Y', 'ID' => $parentDepartmentId);
$arParentSelect = Array('ID', 'IBLOCK_ID', 'LEFT_MARGIN', 'RIGHT_MARGIN', 'NAME');
$arChildSelect = Array('ID', 'IBLOCK_ID', 'LEFT_MARGIN', 'RIGHT_MARGIN', 'NAME');
$parentSection = CIBlockSection::GetList(Array($by=>$order), $arParenFilter, false, $arParentSelect);
if($arParentSection = $parentSection->GetNext()){
$arChildFilter = array('IBLOCK_ID' => $arParentSection['IBLOCK_ID'],'>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'],'<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'],'>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']); // выберет потомков без учета активности
$childSection = CIBlockSection::GetList(array('left_margin' => 'asc'), $arChildFilter, false, $arChildSelect);
while ($arChildSection = $childSection->GetNext())
{
$arChildIDs[] = $arChildSection['ID'];
}
}
|