Как получить корневой раздел элемента инфоблока?

Здравствуйте
Имеется ID элемента. В инфоблоке несколько уровней вложенности. Как получить ID корневой папки этого элемента?
Если использовать CIBlockElement::GetByID($id), то получаем папку, в которую вложен этот элемент, а мне нужно родителя этой папки.
  • Вопрос задан
  • 6131 просмотр
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
CIblockElement получает элемент, но не раздел и элемент не может быть вложен в элемент - только в раздел (причем не в один).
CIBlockElement::GetByID($id)

Если Вас интересуют все корневые элементы (т.е. элементы у которых нет раздела для привязки), то нужно воспользоваться CIblockElement::getList() и получить все товары у кого SECTION_ID = false, "" или 0. Почитайте в документации на эту тему: https://dev.1c-bitrix.ru/api_help/iblock/classes/c...

Если так получается, что в инфоблоке у Вас есть 1 корневой раздел и Вам нужно получить его элементы, то для начала Вам нужно получить его ID через CIblockSection::getList() и уже потом в SECTION_ID через CIblockelement::getList достать все его элементы (INCLUDE_SUBSECTIONS = N!). Почитайте в документации на эту тему: https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
htmaker
@htmaker
Столкнулся недавно с подобной задачей, возможно кому пригодится такое решение:
Как получить корневой раздел элемента инфоблока?
Ответ написан
Комментировать
serginhold
@serginhold
Имеется ID элемента. В инфоблоке несколько уровней вложенности. Как получить ID корневой папки этого элемента?


select 
    s.*
from b_iblock_section_element l
join b_iblock_section s
    on s.ID = l.IBLOCK_SECTION_ID
where
    l.IBLOCK_ELEMENT_ID = $id
    and s.DEPTH_LEVEL = 1


только тут может быть несколько корневых разделов, если у элемента их несколько,
короче это основы sql и значение архитектуры инфоблоков

( что-то подобное уже спрашивали Как сделать добавление товаров в корзину только из одной родительской категории? )
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы