208 похожих чатов

Как общаться с поддержкой подскажите? Тут вот писали что ошибки

не исправляются т.к. разработчики не пишут обращения, но сколько нужно иметь терпения чтобы объяснить поддержке что фаталка в php 8 от того что строка умножается на число например?

Без разбирательств о внутренних причинах помогает так:

public static function propertyIdToFacetId($propertyId)
{
return intval($propertyId) * 2;
}

вместо

public static function propertyIdToFacetId($propertyId)
{
return intval($propertyId * 2);
}

Просто как костыль, но даже школьнику ясно что после умножения на 2 число не может стать дробным, если умножается целое число, и разуммется логично intval поставить именно перед умножением а не после, но какая жесть - вместо этого мне предлагают ПОПРОБОВАТЬ использовать другой тип свойств.

12 ответов

23 просмотра

общаться надо 1. выдохнув 2. спокойно. поддержка 8 не заявлена идет плавный переход, уже очень много исправили, но еще есть куда работать.

Это связано с подсистемой хранения значений свойств элементов инфоблока и тут вам поддержка правильно подсказала: сначала приведите к нужному виду (т.е. floatval, intval и т.п.), а потом уже выполняйте математические операции. Ну либо посмотрите в чем хранит битрикс свойства (дефолтно - строка) и уже потом подберите тип свойства который хранит и оперирует нужный вам тип.

Alexander-Ryabkov Автор вопроса
Andrei Nikolaev
Это связано с подсистемой хранения значений свойст...

Кстати не увидел ваше полезное сообщение. Спасибо за ответ, структурно в БД это колонка с цифровыми значениями и по ней срабатывает фильтр по "больше или равно", тут нет проблем, проблема именно в умножении строки на число, разработчик почему то решил что будет приходить фильтр PROPERTY_123 Тоесть с номером свойства, но у меня несколько инфоблоков по одному фильтру (ограничение возраста в фотобанке) и не получается указать номер, потому я указываю: PROPERTY_AGE_LIMIT Всё правильно тоесть делаю, а в этом местоде пытается выполнится такое выражение intval('AGE_LIMIT' * 2) Что приводит к ошибке. Вообще может стоит написать разработчикам PHP, чтобы они добавили в интерпретатор проверку "на битрикс" и как то со своей стороны решали проблемы)

Alexander Ryabkov
Кстати не увидел ваше полезное сообщение. Спасибо ...

А можете показать где у вас такое преобразование получается (именно intval)? И попробуйте еще 2 хинта: 1. Заменить на PROPERTY_AGE_LIMIT.VALUE 2. Перевести инфоблоки на 2.0

Alexander-Ryabkov Автор вопроса
Andrei Nikolaev
А можете показать где у вас такое преобразование п...

Это глобальная переменная содержащая параметры фильтрации и добавляемая во все вызова компонентов на странице, тоесть это не фильтр запроса

Alexander Ryabkov
Это глобальная переменная содержащая параметры фил...

Подождите. Я тогда чего-то не догоняю: где в коде битрикса происходит эта магия? У вас есть фрагмент кода битрикса наглядно демонстрирующий проблему?

Alexander-Ryabkov Автор вопроса
Andrei Nikolaev
Подождите. Я тогда чего-то не догоняю: где в коде...

[TypeError] Unsupported operand types: string * int (0) /bitrix/modules/iblock/lib/propertyindex/storage.php:269 #0: Bitrix\Iblock\PropertyIndex\Storage::propertyIdToFacetId(string) /bitrix/modules/iblock/lib/propertyindex/querybuilder.php:284 #1: Bitrix\Iblock\PropertyIndex\QueryBuilder->fillWhere(array, boolean, array, array) /bitrix/modules/iblock/lib/propertyindex/querybuilder.php:98 #2: Bitrix\Iblock\PropertyIndex\QueryBuilder->getFilterSql(array, array) /bitrix/modules/iblock/classes/general/iblockelement.php:746 #3: CAllIBlockElement->MkFilter(array, array, array) /bitrix/modules/iblock/classes/general/iblockelement.php:3074 #4: CAllIBlockElement->PrepareGetList(array, array, array, string, array, array, NULL, NULL, array, boolean, string, array, array, array) /bitrix/modules/iblock/classes/mysql/iblockelement.php:327 #5: CIBlockElement->prepareSql(array, array, boolean, array) /bitrix/modules/iblock/classes/mysql/iblockelement.php:667 #6: CIBlockElement::GetList(array, array, boolean, array, array) /bitrix/modules/iblock/lib/component/base.php:1711 #7: Bitrix\Iblock\Component\Base->getSeparateList(array) /bitrix/modules/iblock/lib/component/base.php:1680 #8: Bitrix\Iblock\Component\Base->getElementList(integer, integer) /bitrix/modules/iblock/lib/component/elementlist.php:1067 #9: Bitrix\Iblock\Component\ElementList->getElementList(integer, integer) /bitrix/components/bitrix/catalog.section/class.php:610 #10: CatalogSectionComponent->getElementList(integer, integer) /bitrix/modules/iblock/lib/component/base.php:795 #11: Bitrix\Iblock\Component\Base->initElementList() /bitrix/components/bitrix/catalog.section/class.php:653 #12: CatalogSectionComponent->initElementList() /bitrix/modules/iblock/lib/component/base.php:4087 #13: Bitrix\Iblock\Component\Base->processResultData() /bitrix/components/bitrix/catalog.section/class.php:110 #14: CatalogSectionComponent->processResultData() /bitrix/modules/iblock/lib/component/base.php:4602 #15: Bitrix\Iblock\Component\Base->loadData() /bitrix/modules/iblock/lib/component/elementlist.php:1285 #16: Bitrix\Iblock\Component\ElementList->loadData() /bitrix/modules/iblock/lib/component/base.php:4591 #17: Bitrix\Iblock\Component\Base->initialLoadAction() /bitrix/components/bitrix/catalog.section/class.php:404 #18: CatalogSectionComponent->initialLoadAction() #19: call_user_func(array) /bitrix/modules/iblock/lib/component/base.php:4774 #20: Bitrix\Iblock\Component\Base->doAction() /bitrix/modules/iblock/lib/component/base.php:4792 #21: Bitrix\Iblock\Component\Base->executeComponent() /bitrix/modules/main/classes/general/component.php:660 #22: CBitrixComponent->includeComponent(string, array, object, boolean) /bitrix/modules/main/classes/general/main.php:1072 #23: CAllMain->IncludeComponent(string, string, array, object) /local/templates/main/components/bitrix/catalog/main/section.php:29 #24: include(string) /bitrix/modules/main/classes/general/component_template.php:790 #25: CBitrixComponentTemplate->__IncludePHPTemplate(array, array, string) /bitrix/modules/main/classes/general/component_template.php:885 #26: CBitrixComponentTemplate->IncludeTemplate(array) /bitrix/modules/main/classes/general/component.php:775 #27: CBitrixComponent->showComponentTemplate() /bitrix/modules/main/classes/general/component.php:716 #28: CBitrixComponent->includeComponentTemplate(string) /bitrix/components/bitrix/catalog/component.php:171 #29: include(string) /bitrix/modules/main/classes/general/component.php:607 #30: CBitrixComponent->__includeComponent() /bitrix/modules/main/classes/general/component.php:684 #31: CBitrixComponent->includeComponent(string, array, boolean, boolean) /bitrix/modules/main/classes/general/main.php:1072 #32: CAllMain->IncludeComponent(string, string, array, boolean) /stock/index.php:243 #33: include_once(string) /bitrix/modules/main/include/urlrewrite.php:160 #34: include_once(string) /bitrix/urlrewrite.php:2

Alexander Ryabkov
[TypeError] Unsupported operand types: string * in...

А какой у вас предустановленный фильтр?

Alexander-Ryabkov Автор вопроса
Andrei Nikolaev
А какой у вас предустановленный фильтр?

Например $filter = [ '<=PROPERTY_AGE_LIMIT' => 18, ];

Вы свой фильтр покажите, который валит на php8. Я пока не вижу, как воспроизводить, хотя весь ваш код просмотрел.

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта