@redesupar

Как вытащить все родительские разделы битрикса?

Стоит корп портал.
Делаю список сотрудников компании, где надо вытащить id фио и подразделения, вот не могу справиться именно с подразделениями, так как это доп поле "привязка к разделу инфоблока", надо вытащить именно так Главный отдел / дочерний отдел / дочерний отдел дочернего / отдел где работает сотрудник. Но в итоге выходит как дочерний отдел дочернего / отдел где работает, причем если выводить так то всю иерархию выводит нормально
$rsParentSection = CIBlockSection::GetByID($value);
if ($thisSection = $rsParentSection->GetNext())
{
   $arFilter = array('IBLOCK_ID' => 5,	      "<=LEFT_BORDER" => $thisSection["LEFT_MARGIN"],
      ">=RIGHT_BORDER" => $thisSection["RIGHT_MARGIN"],
      "<DEPTH_LEVEL" => $thisSection["DEPTH_LEVEL"]); // выберет потомков без учета активности
   $rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter);
   while ($arSect = $rsSect->GetNext())
   {
    $sectionNames = $arSect["NAME"]; // наше имя
   }
}

Написал вот такого вот монстра, если кто подскажет как будет правильней буду рад.
<?
    
    $result = \Bitrix\Main\UserTable::getList(array(
    
        'select' => array('ID','NAME','LAST_NAME','SECOND_NAME','UF_DEPARTMENT'), // выберем идентификатор и генерируемое (expression) поле SHORT_NAME

        'order' => array('LAST_LOGIN'=>'DESC'), // все группы, кроме основной группы администраторов,
    

    
    ));
    ?>

    <table class="allusers">
     <thead><th>ID</th><th>Имя Фамилия</th><th>Отдел</th></thead>
    <?

    while ($arUser = $result->fetch()) {
 foreach ($arUser['UF_DEPARTMENT'] as $key => $value) {

   }

$arFilter = array("IBLOCK_ID"=>5, "ID" => $value);
//какие свойства хотим получить, в данном случае нам надо название, описание и пользовательское свойство раздела (создается в меню редактирования раздела в админке)
$arSelect =  array("NAME", "DESCRIPTION", "UF_PRE");
$rsResult = CIBlockSection::GetList(array("SORT"=>"ASC"), $arFilter, false, $arSelect);
while($ob = $rsResult->GetNext()) {
     $sectionName = $ob["NAME"]; // наше имя

}
//пример выборки дерева подразделов для раздела 
$rsParentSection = CIBlockSection::GetByID($value);
if ($thisSection = $rsParentSection->GetNext())
{
   $arFilter = array('IBLOCK_ID' => 5,	      "<=LEFT_BORDER" => $thisSection["LEFT_MARGIN"],
      ">=RIGHT_BORDER" => $thisSection["RIGHT_MARGIN"],
      "<DEPTH_LEVEL" => $thisSection["DEPTH_LEVEL"]); // выберет потомков без учета активности
   $rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter);
   while ($arSect = $rsSect->GetNext())
   {
    $sectionNames = $arSect["NAME"]; // наше имя
   }
}


	  

  echo "<tr><td>".$arUser['ID']."</td><td>".$arUser['NAME']."&nbsp".$arUser['LAST_NAME']."&nbsp".$arUser['SECOND_NAME']."</td><td>".$sectionNames." / ".$sectionName."</td></tr>";

    }

    ?>
  • Вопрос задан
  • 988 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы