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

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

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

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

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

вместо

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

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

12 ответов

10 просмотров

общаться надо 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. Я пока не вижу, как воспроизводить, хотя весь ваш код просмотрел.

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Карта сайта