У меня такой вопрос почему когда я задаю такой фильтр
...
$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",
"<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 |