Как в 1С-Битрикс на сайте вывести список всех элементов справочника?

Ссылка скопирована
12 марта 2026 1 ответ

У меня есть инфоблок в котором я создал свойство типа справочник. Назовем его например "Месяцы". В справочник понакидал все месяцы. Теперь я хочу на сайте вывести все элементы справочника. Как это сделать? Подскажите новичку пожалуйста. Документация 1с-битрикса сложноватой мне показалась. Хорошо бы легенький примерчик какой-нибудь. Спасибо заранее

Дополнительно:

Справочники - это Highload-блоки. Кусок обучающего курса по ним:
https://dev.1c-bitrix.ru/learning/course/index.php...

Короткий пример

use BitrixHighloadblock as HL;  BitrixMainLoader::includeModule('highloadblock');  // Подготовка модели для работы с хайлоадом. Можно вынести в какой-нибудь хелпер, чтобы по ID хайлоада получать его модель $hlblock = HLHighloadBlockTable::getById(2)->fetch(); /** @var BitrixMainORMEntity $entity */ $entity = HLHighloadBlockTable::compileEntity($hlblock); $entityClass = $entity->getDataClass(); /** @var HLDataManager $model */ $model = new $entityClass();  // Сама работа с моделью хайлоада $items = $model->getList(['filter' => ['UF_SHOW_ON_MAIN' => 1]])->fetchAll();

use BitrixHighloadblock as HL; BitrixMainLoader::includeModule('highloadblock'); // Подготовка модели для работы с хайлоадом. Можно вынести в какой-нибудь хелпер, чтобы по ID хайлоада получать его модель $hlblock = HLHighloadBlockTable::getById(2)->fetch(); /** @var BitrixMainORMEntity $entity */ $entity = HLHighloadBlockTable::compileEntity($hlblock); $entityClass = $entity->getDataClass(); /** @var HLDataManager $model */ $model = new $entityClass(); // Сама работа с моделью хайлоада $items = $model->getList(['filter' => ['UF_SHOW_ON_MAIN' => 1]])->fetchAll();

  • Не совсем понимаю, куда это вставить?
    я попытался вставить первую строчку:
    <?
    $hlblock = HLHighloadBlockTable::getById(199)->fetch();
    ?>
    но сразу же получил ошибку:
    Class "HLHighloadBlockTable" not found (0)
  • Попытался вставить в template.php
  • Извиняюсь, потерял кусок файла когда копировал. Добавьте в самое начало:
    use BitrixHighloadblock as HL;  BitrixMainLoader::includeModule('highloadblock');

    use BitrixHighloadblock as HL; BitrixMainLoader::includeModule('highloadblock');

    Ответ сейчас поправлю

  • newked, >> Попытался вставить в template.php
    Уффф... template - это фактически слой View в битриксовом "MVC". Выборки из БД должны происхдоить в классе компонента, либо к result_modifier.php (если вы дорабатываете стандартный компонент).
  • smilingcheater, вы правы. Я дорабатываю стандартный компонент, да. У меня есть возможность подправить result_modifier.php
    Сейчас у меня в result_modifier.php написано это:
    <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

    $arTypes = array();

    $arItem = reset($arResult['ITEMS']);
    $propType = $arItem['PROPERTIES']['TYPE']['ID'];

    $db_enum_list = CIBlockProperty::GetPropertyEnum($propType, Array('SORT'=>'ASC'));
    while($ar_enum_list = $db_enum_list->GetNext()) {
    $arTypes[$ar_enum_list['ID']] = $ar_enum_list['VALUE'];
    }

    $arResult['PROJECT_TYPES'] = $arTypes;

  • smilingcheater, не получается у меня вывести. Вы не могли бы написать прям конкретно пример в моем случае? Как необходимо модифицировать result_modifier.php чтобы я мог вывести список всех элементов справочника в template.php?
  • smilingcheater, я сделал вот так:

    Как в 1С-Битрикс на сайте вывести список всех элементов справочника?

    Но получил ошибку:
    #0: BitrixHighloadblockHighloadBlockTable::compileEntity(NULL)
    /home/c/ci245356/public_html/bitrix/templates/my_super_temp/components/bitrix/news/proekty-list/bitrix/news.list/project-page/result_modifier.php:22

    Осмелюсь предположить что проблема в $hlblock , т.к. оно возвращает NULL.
    199 - это у меня ID свойства, которое я добавил в инфоблок. Тот ли ID я взял?

    Как в 1С-Битрикс на сайте вывести список всех элементов справочника?

  • smilingcheater, нашел где найти ID:

    Как в 1С-Битрикс на сайте вывести список всех элементов справочника?

    Но подставив нужный ID в ваш код и написав в template.php
    <? print_r($items) ?>
    я не получил нужного. Пустота. Что я делаю не так?

  • smilingcheater, все! Разобрался.

    Как в 1С-Битрикс на сайте вывести список всех элементов справочника?

    Спасибо, друг)

Ответы:

гет лист

  • причем тут гет лист инфоблока к справочнику (хайлоад блоку)?
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Виктор Sys Ответ

Для того чтобы вывести список всех элементов справочника на сайте, вам необходимо воспользоваться API 1С-Битрикс. Вам понадобится создать компонент или написать свой PHP код.

Прежде всего, вам нужно получить ID справочника, элементы которого вы хотите вывести. Для этого можно зайти в административную часть сайта, перейти в раздел "Настройки" -> "Структура" -> "Справочники" и выбрать нужный справочник. В URL страницы справочника вы увидите параметр ID, это и будет ID вашего справочника.

Далее, создайте компонент или напишите PHP код для вывода списка элементов справочника. Пример кода для компонента:

 ID_ВАШЕГО_СПРАВОЧНИКА,
);
 
$arSelect = array(
    'ID',
    'NAME',
);
 
$res = CIBlockElement::GetList(
    array('ID' =&gt; 'ASC'),
    $arFilter,
    false,
    false,
    $arSelect
);
 
while ($ob = $res-&gt;GetNextElement()) {
    $arFields = $ob-&gt;GetFields();
    echo $arFields['NAME'] . '<br>';
}
?&gt;

ID_ВАШЕГО_СПРАВОЧНИКА, ); $arSelect = array( 'ID', 'NAME', ); $res = CIBlockElement::GetList( array('ID' =&gt; 'ASC'), $arFilter, false, false, $arSelect ); while ($ob = $res-&gt;GetNextElement()) { $arFields = $ob-&gt;GetFields(); echo $arFields['NAME'] . '<br>'; } ?&gt;

Замените ID_ВАШЕГО_СПРАВОЧНИКА на реальный ID вашего справочника. Данный код получит список всех элементов справочника и выведет их названия.

Вы также можете использовать другие параметры фильтрации и выборки элементов справочника, чтобы получить более конкретный список. Не забудьте активировать компонент на нужной странице вашего сайта или вставить PHP код в нужное место.

Надеюсь, данная информация поможет вам вывести список всех элементов справочника на вашем сайте на платформе 1С-Битрикс. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно