Контент-менеджер Таблица элементов Примечание: В некоторых формах с помощью кнопки Настроить можно осуществить импорт данных таблцы в файл формата Excel.
$arFilter = array("!PROPERTY_CML2_SCAN_CODE"=>false ) - используется, чтобы выбрать только элементы с заполненным свойством; $arFilter = array("!PROPERTY_CML2_SCAN_CODE"=>false ) - используется, чтобы выбрать все элементы;
Выражения слева от '-' равны, а справа - нет. Это - Пятницо :) ))
Кстати, эти страницы типов фильтров (и ссылки на них) лучше переименовать в 'Фильтр "Число"', 'Фильтр "Строка"', 'Фильтр "Маска"' и 'Фильтр "Дата"', чтобы не путаться с обычными типами данных. Сейчас, например, запись 'ID - по числовому коду (Число);' в описании функции CIBlockElement::GetList(), на мой взгляд, мало информативна. Ведь то, что ID - это число, я уже знаю, и совсем не предполагаю, что по предложенной ссылке есть дополнительная полезная информация. А если будет написано 'ID - по числовому коду (фильтр "Число");', то я сразу стану внимательнее относиться к таким ссылкам. Ведь, в частности, именно они указывают разницу, когда применяется тип фильтрации "Строка", а когда - "Маска".
Дополнительно задам еще пару вопросов:
1. Работают ли типы фильтрации в функциях, в описании которых это явно не описано, например, в CSocNetGroup::GetList() или в CIBlockProperty::GetList() ? (Это я к тому, что вдруг они работают, а в описании таких функций об этом просто забыли написать.)
2. Правильно ли я понимаю, что для значений пользовательских свойств типа DateTime ни в одной функции не используется фильтр "Дата", а вместо него применяется только поиск по шаблону [%_] ?
P.S.: Подсказка по предыдущему посту - строку
$arFilter = array("!PROPERTY_CML2_SCAN_CODE"=>false ) - используется, чтобы выбрать все элементы;
нужно было просто удалить со страницы Фильтрация ;) Кстати, этот злосчастный пример остался еще и в API - на странице описания функции CIBlockElement::GetList().
--- Добавлено:
И еще по фильтрации:
В документации классов модулей "Интернет-магазин" и "Торговый каталог" (например, CSaleOrder::GetList()) типы фильтрации '!' и '+' названы "модификаторами", а остальные ('>=', '>', '<=', '<', '~', '@', '%') - "операторами". Может имеет смысл использовать такую же нотацию и на странице курса?
Наверное, стоит упомянуть в курсе операторы '~', '@' и модификатор '+'. Интересно, они специфичны для этих двух модулей, или встроены в ядро? (Например, для CBlogPost::GetList() оператор '~' отсутствует в описании параметра arFilter, но работает, как указано в примере и комментарии.)
Интересно также знать, работает ли оператор '?' для классов модулей "Интернет-магазин" и "Торговый каталог"? (В API на эти модули он не упомянут.)
А также, отличается ли логика работы оператора '%' в модулях "Интернет-магазин" и "Торговый каталог" от прочих? Ведь в документации на эти модули указано, что для этого оператора "значение поля проверяется на соответствие передаваемой в фильтр строке в соответствии с языком запросов" (я так понимаю в SQL текущей базы данных?), в то время как в общем описании инфоблоков - действие зависит от типа значения (для чисел и дат - проверка на точное совпадение значения, для строк и масок - это регистронезависимый поиск подстроки).