[QUOTE]
Дмитрий Яковенко написал:
[QUOTE][URL=/community/webdev/user/277667/]Алексей Казаков[/URL] написал:
смешно. от даты создания темы прошло 5 лет, а вопрос всё так же актуален и ответ не появился [/QUOTE] мне интересно, руководствуясь какой логикой решения должны появлятся в некро-топиках?
Тот кто ищет - находит. [CODE] if (\Bitrix\Main\Loader::includeModule('iblock'))
{
$parameters = [
'sel ect' => ['ID', 'NAME'],
'filter' => [
'IBLOCK_ID' => 5,
[
'LOGIC' => 'OR',
[">=LEFT_MARGIN" => 1, "<=RIGHT_MARGIN" => "16"],
[">=LEFT_MARGIN" => 31, "<=RIGHT_MARGIN" => "32"],
]
]
];
$r = \Bitrix\Iblock\SectionTable::getList($parameters);
while ($s = $r->fetch())
{
echo "<pre>"; print_r($s); echo "</pre>";
}
}
echo "<pre>"; print_r(\Bitrix\Iblock\SectionTable::query()->getLastQuery()); echo "</pre>";
[/CODE] Получите вот такой запрос в базу [CODE] SELECT
`iblock_section`.`ID` AS `ID`,
`iblock_section`.`NAME` AS `NAME`
FR OM `b_iblock_section` `iblock_section`
WHERE `iblock_section`.`IBLOCK_ID` = 5
AND (
(
`iblock_section`.`LEFT_MARGIN` >= 1
AND `iblock_section`.`RIGHT_MARGIN` <= 16
)
OR (
`iblock_section`.`LEFT_MARGIN` >= 31
AND `iblock_section`.`RIGHT_MARGIN` <= 32
)
) [/CODE] [/QUOTE]
К сожалению не работает, выбирается только по IB:OCK_ID и по последнему
`iblock_section`.`LEFT_MARGIN` >= 31
AND `iblock_section`.`RIGHT_MARGIN` <= 32
логика = OR - не работает :(.
Вот мой пример фильтрации для выбора всех неактивных разделов и разделов у которых проставлена галка в дополнительном свойстве.
$arFilt=array("IBLOCK_ID"=>$IBLOCK_ID, array("LOGIC"=>"OR", array("ACTIVE"=>"N"), array("UF_DO_NOT_UPDATE"=>3)));
и это НЕ работает.
Происходит выборка по:
"IBLOCK_ID"=>$IBLOCK_ID, "UF_DO_NOT_UPDATE"=>3