В Вашем запросе поменял =IBLOCK_CODE' => 'travel_points', на =IBLOCK_CODE' => 'travels'
$arFilter = array('=IBLOCK_CODE' => 'travels','PROPERTY' => array('type'=>1, '<=price' => 500)); и запрос сработал как надо И это естественно правильно, т.к это свойство относится к таблице путешествий, а не к таблице точек путешествий
следующий баг: 1. оказалось, что в двух инфоблоках одинаковые поля price. travels и travel_points в таблице travel_points изменил поле на price_ изменил IBLOCK_CODE с travel_points на travels итого на входе в GetList имею массив { [">=DATE_ACTIVE_FROM"]=> "29.10.1218" ["<=DATE_ACTIVE_FROM"]=> "16.02.2011" ["PROPERTY"]=> { ["type"]=> "1" ["<=price"]=> "500" } ["IBLOCK_CODE"]=> "travels" ["ACTIVE"]=> "Y" [">=PROPERTY_y"]=> "-59.5343180010956" ["<=PROPERTY_y"]=> "84.26717240431665" [">=PROPERTY_x"]=> 21.796875 ["<=PROPERTY_x"]=> 53.4375
выполняя GetList получаю select вроде бы все, что надо " SELECT FROM b_iblock B INNER JOIN b_lang L ON B.LID=L.LID INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID INNER JOIN b_iblock_element_prop_s1 FPS ON FPS.IBLOCK_ELEMENT_ID = BE.ID INNER JOIN b_iblock_property FP1 ON FP1.IBLOCK_ID=B.ID AND FP1.CODE='type' INNER JOIN b_iblock_property_enum FPEN1 ON FP1.ID = FPEN1.PROPERTY_ID AND FPS.PROPERTY_1=FPEN1.ID WHERE 1=1 AND B.ID IN (0,1) AND ((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)) AND ((((BE.ACTIVE_FROM >= '1218-10-29 00:00:00')))) AND ((((BE.ACTIVE_FROM <= '2011-02-16 00:00:00')))) AND ((((FPEN1.ID = '1')))) AND ((((FPS.PROPERTY_52 <= '500')))) AND ((((BE.ACTIVE='Y')))) AND ((((FPS.PROPERTY_32 >= '-59.534318001096')))) AND ((((FPS.PROPERTY_31 >= '21.796875')))) AND ((((FPS.PROPERTY_32 <= '84.267172404317')))) AND ((((FPS.PROPERTY_31 <= '53.4375')))) " Но, нет полей которые надо выбрать.......
почему-то работа с $arSelectFields происходит гораздо ниже по коду чем выполняется запрос. ручками вставляю select be.id - все начинает работать. почему?
myvista myvista пишет: в таблице travel_points изменил поле на price_
Вы так часто говорите про "таблицу", что все же уточню, таблица в вашей терминологии относительно данной задачи - это информационный блок или же физическая таблица? Поскольку если это инфоблок, то термин таблица здесь не особо подходит, а если это физическая таблица б.д., то я не понимаю какое отношение она имеет к API модуля инфоблоков. Но предположим, что "таблица" - это все же "инфоблок", тогда:
Цитата
myvista myvista пишет: 1. оказалось, что в двух инфоблоках одинаковые поля price. travels и travel_points
- cвойства могут иметь одинаковый символьный код в разных инфоблоках (и одинаковый или разный тип).
Цитата
myvista myvista пишет: итого на входе в GetList имею массив
Хоть это и не повлияет на результат, но если вы начали использовать конструкцию фильтра по свойствам через массив с ключом 'PROPERTY', то почему бы его не использовать до конца? Т.е. так:
Как я вижу, свойство с кодом type у вас имеет тип список, вы знаете о том, что конструкция 'type' => '1' выполнит фильтрацию по ID значения списка, а не по самому значению?
таблица - это именно инфоблок. просто я еще не привык к терминологии bitrix все параметры вызова: $resTP = CIBlockElement::GetList(array(), $arFilterTP, array("PROPERTY_travel"), false, array("ID")); т.е мне надо получить id путешествий, у которых тип (type)равен 1, и цена(price) менее 500
Цитата
Хоть это и не повлияет на результат, но если вы начали использовать конструкцию фильтра по свойствам через массив с ключом 'PROPERTY', то почему бы его не использовать до конца? Т.е. так:
А есть в этом разница? сегодня попробую, но мне кажется разницы нет. Просто у меня нет цели переделать вызов ф-ции, а просто найти где ошибка и поправить ее
Цитата
Как я вижу, свойство с кодом type у вас имеет тип список, вы знаете о том, что конструкция 'type' => '1' выполнит фильтрацию по ID значения списка, а не по самому значению?
Пожалуйста, сходите по ссылке (она в моем ответе выше) в документацию к методу CIBlockElement::GetList()
Цитата
myvista myvista пишет: А есть в этом разница?
Я же написал, что не повлияет на результат...
Цитата
myvista myvista пишет: поподробнее пож.
У значений свойств типа список есть значение списка и ID этого значения, вот при такой форме записи: 'type' => '1' - будут выбираться все элементы, у которых ID значения свойства-списка type равно 1. а так: 'type_VALUE' => '1' - будут выбираться все элементы, у которых значение свойства-списка type равно 1.
так до сих пор и не внесли в доки, как фильтровать по дате и какой нужен формат... спасибо эта тема помогла!
Цитата
Максим Смирнов написал: Свойство типа Дата/Время "внутре" хранится как строковое с датой в формате YYYY-MM-DD HH:MI:SS. Соответственно сортировка по значению такого свойства будет работать корректно, а вот значение для фильтрации формируется примерно так: $cat_filter[">"."PROPERTY_available"] = date("Y-m-d");