Рубрика: Ядро D7

  • Новые возможности фильтрации по наличию, ценам и другим полям товара в CIBLockElement::GetList. Оптимизация запросов — https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=12183#iblock_18_6_200.

    Пример: Ищем товары простого типа (TYPE=1), в наличии, по цене свыше 500.

  • Механизм единого управления свойствами.
    https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=42&LESSON_ID=1986
    Механизм позволяет определить при редактировании свойства, где оно будет отображаться.

    Классы: \Bitrix\Iblock\PropertyFeatureTable, \Bitrix\Iblock\Model\PropertyFeature. Посмотреть можно в файле bitrix/modules/iblock/admin/iblock_edit_property.php.

Читать дальше

Задача: Выбрать все элементы инфоблока у которых дублируются символьные коды.

Прямой запрос:

API:

Читать дальше

В методе \CIBlockElement::GetList появились новые параметры, касающиеся работы с товарами. Также формируемые sql-запросы стали более оптимальными.

Цитата из документации:
Важно! Начиная с версии 18.6.200 модуля Информационные блоки, в методе доступны новые возможности работы с товарами, изменены ключи метода. Читайте подробности в уроке Товары и CIBlockElement::GetList.

Читать дальше

Статья рассказывает про сложную логику фильтрации в новом ядре D7. В качестве примера взят поиск пользователей на основе сложного запроса, подзапроса. В статье рассказано, как отключить дублирование записей при сложных запросах со связкой таблиц и оптимизировать сложные запросы. Рекомендуется к прочтению.

При использовании CUser::GetList нет возможности фильтровать пользователей, используя логику в фильтре. ORM в новом ядре и класс Bitrix\Main\UserTable позволяет решить эту проблему.
Допустим, нам нужно выбрать пользователя 20, а также пользователей имеющих значение пользовательского поля UF_SHMS = 770
Код будет следующий:

Все хорошо до тех пор, пока мы не решим применить фильтрацию по группам. Например, дополнительно, выбрать пользователей с UF_SHMS= 770, состоящих в группе 6.
Соответствие группа-пользователь хранится в таблице b_user_group. Для работы с этой таблицей есть класс Bitrix\Main\UserGroupTable. Одному пользователю из b_user может соответствовать несколько записей в  b_user_group.

Итого имеем отношение один ко многим. В учебном курсе сказано, что при таком отношении «нужно лишь использовать специальный синтаксис» и приведен пример для параметра select. Это же работает и для filter. Используем

Из-за того, что пользователь может состоять в нескольких группах. Получим несколько одинаковых записей. Это решается добавлением параметра «data_doubling»=>false в getList

Читать дальше