RZVL пишет: Тоесть, я например, не представляю, как можно получить количество основных элементов, у которых на третьем уровне свойств заполнен какой-то параметр...
RZVL пишет: По поводу самому написать метод - я попытался это сделать, в принципе саму выборку я сделал, но в методе после выборки есть еще разбор данных, которые я не осилил... А точнее - не осилил как их разделить, чтобы не потерять совместимость...
Посмотрел, там делается обработка результатов для вторых инфоблоков (инфоблоков+), а т.к. это, будем считать, ваш самописный метод, то можно ограничиться только обычными инфоблоками. Ну, а если же вам подойдет режим хранения свойств в отдельных таблицах (инфоблоки+), то скорее всего вам и не понадобится этот метод, т.к. он значительно быстрее работает.
Только делайте бэкап базы перед переводом в инфоблоки+.
Sergey Leshchenko пишет: Тогда странно, что у вас так много запросов генерируется, не должно быть так.
Дело в явном указание свойств для выборки. и запрос как раз это указывает (выбираются методанные)
Цитата
RZVL пишет: Тоесть для каждого свойства делается запрос вида: Код
SELECT BP.* FROM b_iblock_property BP, b_iblock B WHERE BP.IBLOCK_ID=B.ID AND B.ID IN (IBLOCK_ID) AND UPPER(BP.CODE)=UPPER('CODE_OF_PROPERTY')
Если в arSelect указывать свойства необходимые для выборки то получим по запросу на каждое свойство к таблице b_iblock_property. т.е. если явно перечислить 100 свойств то получим 100 запросов
А если указать PROPERTY_* то всего один запрос который вернет все свойства.
В принципе, если будет железно использоваться инфоблоки+, то можно обойтись и без _CIBElement::GetProperties(), а соответствие "символный код - ID" свойства получить до или после выборки, это чтобы разобрать что к чему в результате.
Прошу пояснить, есть ли сейчас ограничение на количество свойств в параметрах фильтра для одного инфоблока? От чего оно зависит? В каком диапазоне может быть этот лимит если он есть?
Sergey Leshchenko написал: ЦитатаRZVL пишет: Мне просто нужна возможность CIBlockElement::GetProperty только с возможностью указать не один элемент, а несколько для выборки...Штатной такой возможности нет, но в принципе, можно взять метод CIBlockElement::GetProperty() скопировать в свое пространтсво и добавить в него такую возможность. На первый взгляд там совсем не сложно это сделать. А от наличия штатной такой возможности я бы тоже не отказался, можно передать через службу ТП такое пожелание к модулю.
И CIBlockProperty::GetList массив фильтра по айди на вход не принимает, беда. (в доке так и написано ни один параметр фильтра не принимает массивы.)
Разработка интернет магазина под ключ на 1С-Битрикс www.electroid.org, интеграция битрикс и 1С.
Dmitry Ipatov написал: И CIBlockProperty::GetList массив фильтра по айди на вход не принимает, беда. (в доке так и написано ни один параметр фильтра не принимает массивы.)