Выборка элементов, разделов и инфоблоков

Фильтр инфоблоков CODE => следуем заменить на =CODE, иначе будет использован LIKE.

Фильтр пользователей по ID не следует писать ID, следует использовать ID_EQUAL_EXACT.

CIBlockElement::GetList

Список элементов по фильтру

$arSort = array("SORT" => "ASC");
$arFilter = array("IBLOCK_ID" => 9, "ID" => $_REQUEST['ID'], "ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "PROPERTY_IS_MAIN_PAGE_VALUE" => "да");
$arSelect = array("ID", "CODE", "NAME", "PREVIEW_PICTURE", "DETAIL_PICTURE", "PREVIEW_TEXT", "DETAIL_TEXT", "PROPERTY_FILE", "ACTIVE_FROM", "ACTIVE_TO");
$arNavStartParams = false; // $arNavStartParams = array('iNumPage' => 1, 'nPageSize' => 10); -- для пагинации
$itemsList = CIBlockElement::GetList($arSort, $arFilter, false, $arNavStartParams, $arSelect);
if ($itemsList->SelectedRowsCount() > 0) {
  while ($item = $itemsList->Fetch()) {
    die(var_dump($item));
  }
}

Если инфоблок участвует в документообороте, документы добавляются как «неопубликованные», и CIBlockElement::GetList() их не выбирает. Для их выборки следует установить в фильтр SHOW_NEW => Y. CIBlockElement::WF_GetLast() - последняя копия элемента в документообороте

Узнать точное количество элементов инфоблока 35 (без их версий):

SELECT COUNT(*) FROM `b_iblock_element` WHERE `IBLOCK_ID` = 35 AND `WF_PARENT_ELEMENT_ID` IS NULL;

Техническая часть документооборота

CIBlockSection::GetList

Список разделов по фильтру

$arSort = array("SORT" => "ASC");
$arFilter = array("IBLOCK_ID" => 6, "SECTION_ID" => $ar_props["ID"], "DEPTH_LEVEL" => 2);
$arSelect = array("ID", "NAME", "UF_CLASS_SFX", "UF_CAP");
$itemsList = CIBlockSection::GetList($arSort, $arFilter, false, $arSelect, false);
if ($itemsList->SelectedRowsCount() > 0) {
  while ($item = $itemsList->Fetch()) {
    die(var_dump($item));
  }
}

Пользовательские поля имеют префикс «UF_». Подробнее о них

CIBlock::GetList

Список информационных блоков по фильтру

$arSort = array("SORT" => "ASC");
$arFilter = array("IBLOCK_ID"=>9, "ID"=>$_REQUEST['ID']);
$itemsList = CIBlock::GetList($arSort, $arFilter, false);
if ($itemsList->SelectedRowsCount() > 0) {
  while ($item = $itemsList->Fetch()) {
    die(var_dump($item));
  }
}

Пагинация

$arResult['ITEMS']->NavStart(10, false);
$arResult['NAV_STRING'] = $searchResultCount > 10 ? $arResult['ITEMS']->GetPageNavStringEx($navComponentObject, 'title', 'pager_new', 'Y') : null;