Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Найти в инфоблоке запись с наибольшим значением доп.свойства

00 голосов
3
В действующией БД есть свойство номер предложения NUMBER - строка

Мне нужно найти наибольший номер
Код
            $arSelect = Array("ID", "PROPERTY_NUMBER");
            $arFilter = Array("IBLOCK_ID" => $this->paramInfoBlock ['IBLOCK_ID'],"INCLUDE_SUBSECTIONS" => "Y");
            $items = CIBlockElement::GetList(Array('PROPERTY_NUMBER' => 'DESC'), $arFilter, false, false, $arSelect);
            $lastEl = $items->GetNextElement();
      $propN = $lastEl->fields['PROPERTY_NUMBER_VALUE'];
 
сортировка работает со строками и не будет работать верно.


Пыталась преобразовать тип свойства к Integer, но сортировка отрабатывает так же.

Может, нужно выполнить к.л. процедуру, чтобы запрос видел новый тип.

Посоветуйте, пож.,  как найти наибольший элемент, не пользуясь перебором всех записей из запроса GetList.
спросил 09 Май, 13 от YouFrend (180 баллов)

3 Ответы

00 голосов
А вот так тоже не работает сортировка? 
Array('PROPERTY_NUMBER.ID' => 'DESC')

Или может IBLOCK_ID ему нужно в arSelect? В некоторых случаях помогает smile:)
ответил 09 Май, 13 от BRENN (1,080 баллов)
00 голосов
Спасибо за ответ, написала прямой запрос к БД, он работает, предложеннные варианты не проверяла.
Код
            global $DB;
            $strSql = '
                SEL ECT MAX(CAST(VALUE AS UNSIGNED)) AS max_num
                FR OM b_iblock_element_property AS a
                INNER JOIN b_iblock_property AS b ON b.ID = a.IBLOCK_PROPERTY_ID
                WHERE b.CODE = "NUMBER"
          ';
           $NumberPubl = $DB->Query($strSql)->getNext();
         $NumberPubl = $NumberPubl['max_num'] ; 
ответил 10 Май, 13 от YouFrend (180 баллов)
00 голосов
Свойство должно быть типа "число", тогда будет работать сортировка в CIBlockElement::GetList
ответил 14 Июль, 13 от NitroGeN (2,840 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
2 ответов
0 голосов
3 ответов
спросил 28 Май, 13 от Lekar (2,220 баллов)