shopkod
2/6/2020 - 9:56 AM

D7 SectionTable::getList

<?
\Bitrix\Main\Loader::includeModule('iblock');

//Получение полей раздела
$arSection = \Bitrix\Iblock\SectionTable::getById($SECTION_ID)->fetch();

// Выборка разделов инфоблока средствами класса \Bitrix\Iblock\SectionTable
$rsSection = \Bitrix\Iblock\SectionTable::getList([
	'filter' => [
		'IBLOCK_ID' => IBLOCK_ID,
		"ACTIVE" => "Y",
		"GLOBAL_ACTIVE" => "Y"
	],
	'select' =>  ['ID', 'NAME'],
]);
while ($arSection = $rsSection->fetch())
	$arSections[$arSection['ID']] = $arSection['NAME'];
			
// Выбрать всех руководителей
$sectionEntity = \Bitrix\Iblock\Model\Section::compileEntityByIblock($structureIblockId);
$rsSection = $sectionEntity::getList([
	'filter' => [
		'IBLOCK_ID' => $structureIblockId,
		'ACTIVE' => 'Y',
		'GLOBAL_ACTIVE' => 'Y',
		'NAME' => 'Командор%К-'.$shopNumber,
	],
	'select' =>  ['ID', 'LEFT_MARGIN', 'RIGHT_MARGIN', 'DEPTH_LEVEL', 'UF_HEAD'],
	'cache' =>  ['ttl', 86400],
]);
if ($arSection = $rsSection->fetch())
{
		$arSections[] = $arSection['UF_HEAD'];
}
			
//Выборка активных разделов инфоблока, отсортированный для построения дерева разделов
$rsSection = \Bitrix\Iblock\SectionTable::getList([
  	'order' => ['LEFT_MARGIN' => 'ASC'],
    'filter' => [
        'IBLOCK_ID' => $IBLOCK_ID,
        'DEPTH_LEVEL' => 1,
        "IBLOCK_SECTION_ID" => $SECTION_ID,
        "ACTIVE" => "Y",
        "GLOBAL_ACTIVE" => "Y"      
    ], 
    'select' =>  ['ID', 'CODE', 'NAME', 'UF_TEXT'],
		'cache' =>  ['ttl', 86400],
]);
while ($arSection = $rsSection->fetch()) 
{
    print_r($arSection);
}

//Выборка дерева активных разделов инфоблока
$arSection = \Bitrix\Iblock\SectionTable::getById($rootSectionId)->fetch();
if ($arSection)
{
	$rsSection = \Bitrix\Iblock\SectionTable::getList([
		'order' => ['LEFT_MARGIN' => 'ASC'],
		'filter' => [
			'IBLOCK_ID' => $arResult["IBLOCK_ID"],
      'ACTIVE' => 'Y',
      'GLOBAL_ACTIVE' => 'Y',
			'>LEFT_MARGIN' => $arSection['LEFT_MARGIN'],
			'<RIGHT_MARGIN' => $arSection['RIGHT_MARGIN'],
			'>DEPTH_LEVEL' => $arSection['DEPTH_LEVEL']
		],
		'select' => ['ID', 'NAME'],
	]);
	while ($arSection = $rsSection->fetch())
	{
		$arSections[$arSection['ID']] = $arSection['NAME'];
	}
}

//Выборка дерева активных разделов инфоблока от корневого до $sectionId не включая его
$structureIblockId = intval(\Bitrix\Main\Config\Option::get('intranet', 'iblock_structure'));
$arSection = \Bitrix\Iblock\SectionTable::getById($sectionId)->fetch();
$arDepartmentChain = $sectionEntity::getList([
	'filter' => [
		'IBLOCK_ID' => $structureIblockId,
		'ACTIVE' => 'Y',
		'GLOBAL_ACTIVE' => 'Y',
		'<=LEFT_MARGIN' => $arSection['LEFT_MARGIN'],
		'>=RIGHT_MARGIN' => $arSection['RIGHT_MARGIN'],
		'<DEPTH_LEVEL' => $arSection['DEPTH_LEVEL']
      ],
	'select' =>  ['ID', 'NAME', 'UF_HEAD'],
	'order' => ['LEFT_MARGIN' => 'ASC']
	//'cache' =>  ['ttl', 86400],
])->fetchAll();
	

//Выборка трех случайных активных разделов уровня 1 инфоблока, получаем название раздела, а также название родительского раздела
$q = new \Bitrix\Main\Entity\Query(Bitrix\Iblock\SectionTable::getEntity());
$q->registerRuntimeField(
        'RAND', ['data_type' => 'float', 'expression' => ['RAND()']]
    )
    ->setOrder(['RAND' => 'ASC'])
    ->setSelect([
        'ID',
        'IBLOCK_ID',
        'NAME',
        'PARENT_SECTION_NAME'=>'PARENT_SECTION.NAME',
    ])
    ->setFilter([
        'ACTIVE' => 'Y',
        'GLOBAL_ACTIVE' => 'Y',
        'IBLOCK_ID' => $IBLOCK_ID,
        'DEPTH_LEVEL' => 1,
    ])
    ->setLimit(3);

$rsSection = $q->exec();
while ($arSection=$rsSection->fetch()) 
{
    print_r($arSection);
}

//Выборка всех активных разделов инфоблока с получением имени и фамилии создавшего и изменившего раздел пользователей
$rsSection = \Bitrix\Iblock\SectionTable::getList([
    'filter' => [
        'IBLOCK_ID' => $IBLOCK_ID,
        'ACTIVE' => 'Y',
        'GLOBAL_ACTIVE' => 'Y',   
    ], 
    'select' =>  [
        'ID',
        'NAME',
        'CREATED_USER_NAME'=>'CREATED_BY_USER.NAME',
        'CREATED_USER_LAST_NAME'=>'CREATED_BY_USER.LAST_NAME',
        'MODIFIED_USER_NAME'=>'MODIFIED_BY_USER.NAME',
        'MODIFIED_USER_LAST_NAME'=>'MODIFIED_BY_USER.LAST_NAME',    
    ],
]);
while ($arSection = $rsSection->fetch()) 
{
    print_r($arSection);
}

//Выборка активных разделов инфоблока с получением названия инфоблока и шаблона пути к разделу
$rsSection = \Bitrix\Iblock\SectionTable::getList([
    'filter' => [
        'IBLOCK_ID' => $IBLOCK_ID,
        'ACTIVE' => 'Y',
        'GLOBAL_ACTIVE' => 'Y',   
    ], 
    'select' =>  [
        'ID',
        'NAME',
        'IBLOCK_NAME' => 'IBLOCK.NAME',
        'IBLOCK_SECTION_PAGE_URL' => 'IBLOCK.SECTION_PAGE_URL',  
    ],
]);
while ($arSection = $rsSection->fetch()) 
{
    print_r($arSection);
}