элемента корзины Bitrix\Sale\BasketItem getPropertyCollection() перестал возвращать актуальные данные при повторном вызове этого метода. Оказалось что проблема лежит в классе bitrix/modules/sale/lib/basketpropertiesbase.php, конкретно метод loadByCollection()
при первом обращении к этому методу происходит кэширование данных в статичную переменную класса - http://prntscr.com/lwkcl1
при последующих обращениях значения свойств корзины берутся из этой статической переменной
Никакого метода для сброса этого кэша нет, переменная имеет видимость protected, соответственно в рамках одного хита нет возможности получить актуальные свойства корзины из базы с помощью этого метода.
Кто-то знает решение или писать в ТП?
т.е. если будет вот так (Утрируе конечно) $basket = new Basket(); $propertyCollection = $basket->getPropertyCollection(); foreach($propertyCollection as $property) $property->setProp('TEST','T'); $propertyCollection = $basket->getPropertyCollection(); то в $propertyCollection будут старые данные ?
Обсуждают сегодня