У меня такой вопрос почему когда я задаю такой фильтр
...
$filt=array( "IBLOCK_TYPE"=>$arParams["IBLOCK_TYPE"],
"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
"ACTIVE"=>"Y",
"
<RIGHT_MARGIN"=>$arResult["TEHNOLOGY"]["RIGHT_MARGIN"],
"
>LEFT_MARGIN" => $arResult["TEHNOLOGY"]["LEFT_MARGIN"]
);
....
В результате генерируется следующий запрос:
SELECT DISTINCT BS.*, B.LIST_PAGE_URL, B.SECTION_PAGE_URL, B.IBLOCK_TYPE_ID, B.CODE as IBLOCK_CODE, B.XML_ID as IBLOCK_EXTERNAL_ID, BS.XML_ID as EXTERNAL_ID, DATE_FORMAT(BS.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X, DATE_FORMAT(BS.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE
FROM
b_iblock_section BS
INNER JOIN b_iblock B ON BS.IBLOCK_ID = B.ID
LEFT JOIN b_iblock_group IBG ON IBG.IBLOCK_ID=B.ID
WHERE
1=1 AND ((((BS.IBLOCK_ID = '8')))) AND ((((BS.ACTIVE='Y')))) AND (
BS.RIGHT_MARGIN <= 8) AND (
BS.LEFT_MARGIN >=1) AND ((((B.IBLOCK_TYPE_ID LIKE 'info')))) AND ((((B.ID = '8'))))
ORDER BY
BS.LEFT_MARGIN asc
У меня этот вопрос возникал и раньше при работе с разделами, но опять он сплыл. Может я что-то не правильно указал в фильтре. Я хотел что бы условие было > или <, но никак не (=>, <=).
И еще я пониаю что в этом случае можно сделать
...
$filt=array( "IBLOCK_TYPE"=>$arParams["IBLOCK_TYPE"],
"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
"ACTIVE"=>"Y",
"
<RIGHT_MARGIN"=> ($arResult["TEHNOLOGY"]["RIGHT_MARGIN"]-1),
"
>LEFT_MARGIN" => ($arResult["TEHNOLOGY"]["LEFT_MARGIN"]+1)
);
....
Но все же.... можно ли это заставить работать без учета +1, объясню почему, допустим в данный момент я реализую компонент в таком виде, пройдет обновление где это исправят, в итоге я потеряю 2 записи чево бы не очень хотелось.
четкая запись в документации про фильтр
Цитата |
---|
Перед названием фильтруемого поля можно указать тип проверки фильтра:
* "!" - не равно * "<" - меньше * "<=" - меньше либо равно * ">" - больше * ">=" - больше либо равно * "><" - между * и т.д. |
Так же попробовал
Код |
---|
$filt=array( "IBLOCK_TYPE"=>$arParams["IBLOCK_TYPE"],
"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
"ACTIVE"=>"Y",
"><"."LEFT_MARGIN" => array(
$arResult["TEHNOLOGY"]["LEFT_MARGIN"],
$arResult["TEHNOLOGY"]"RIGHT_MARGIN"]
)
); |
Желаемого так же не получил (ВООБЩЕ)
Код |
---|
SELECT DISTINCT BS.*, B.LIST_PAGE_URL, B.SECTION_PAGE_URL, B.IBLOCK_TYPE_ID, B.CODE as IBLOCK_CODE, B.XML_ID as IBLOCK_EXTERNAL_ID, BS.XML_ID as EXTERNAL_ID, DATE_FORMAT(BS.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X, DATE_FORMAT(BS.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE
FROM
b_iblock_section BS
INNER JOIN b_iblock B ON BS.IBLOCK_ID = B.ID
LEFT JOIN b_iblock_group IBG ON IBG.IBLOCK_ID=B.ID
WHERE
1=1 AND ((((BS.IBLOCK_ID = '8')))) AND ((((BS.ACTIVE='Y')))) AND (BS.LEFT_MARGIN >=1) AND ((((B.IBLOCK_TYPE_ID LIKE 'info')))) AND ((((B.ID = '8'))))
ORDER BY
BS.LEFT_MARGIN asc |