Как в 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, я сделал вот так:

Но получил ошибку:
#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 я взял?
- smilingcheater, нашел где найти ID:

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

Спасибо, друг)
Ответы:
гет лист
- причем тут гет лист инфоблока к справочнику (хайлоад блоку)?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы вывести список всех элементов справочника на сайте, вам необходимо воспользоваться API 1С-Битрикс. Вам понадобится создать компонент или написать свой PHP код.
Прежде всего, вам нужно получить ID справочника, элементы которого вы хотите вывести. Для этого можно зайти в административную часть сайта, перейти в раздел "Настройки" -> "Структура" -> "Справочники" и выбрать нужный справочник. В URL страницы справочника вы увидите параметр ID, это и будет ID вашего справочника.
Далее, создайте компонент или напишите PHP код для вывода списка элементов справочника. Пример кода для компонента:
ID_ВАШЕГО_СПРАВОЧНИКА, ); $arSelect = array( 'ID', 'NAME', ); $res = CIBlockElement::GetList( array('ID' => 'ASC'), $arFilter, false, false, $arSelect ); while ($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); echo $arFields['NAME'] . '<br>'; } ?>
Замените ID_ВАШЕГО_СПРАВОЧНИКА на реальный ID вашего справочника. Данный код получит список всех элементов справочника и выведет их названия.
Вы также можете использовать другие параметры фильтрации и выборки элементов справочника, чтобы получить более конкретный список. Не забудьте активировать компонент на нужной странице вашего сайта или вставить PHP код в нужное место.
Надеюсь, данная информация поможет вам вывести список всех элементов справочника на вашем сайте на платформе 1С-Битрикс. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.