Последние обновления привнесли существенные изменения в связь между магазином и каталогом. Базовые принципы остались неизменными: магазин ничего не знает о каталоге (точнее не знает основной функционал магазина), связь осуществляется через через специальный обратный вызов. Соответственно магазину все равно, кто кормит его товарами. Это может быть вовсе не модуль каталога. Магазину важно только, чтобы ему дали интерфейс, по которому он может актуализировать цены, проверять количество, сообщать о фактической продаже товара и т.п.
И интерфейс этого канала изменился.
Старый интерфейс представлял собой набор методов, имена которых записывались в поля соответствующего элемента корзины (для каждого элемента). Магазин по необходимости запускал соответствующие методы. Например, для актуализации цены и доступности товара он запускал метод из поля CALLBACK_FUNC, а при оформлении заказа - ORDER_CALLBACK_FUNC.
Для реализации нового функционала каталога и магазина 12.5 (складской учет, резервирование и отгрузка товаров,...) нам потребовалось существенно расширить интерфейс общения между каталогом и магазином. И экстенсивное расширение путем добавления в корзину новых полей с новыми именами новых функций было признано не эффективным.
Магазин продолжает поддерживать старый интерфейс в старом объеме функционала. Но с текущей версии общение магазина и каталога базируется на новом интерфейсе. И новый функционал тоже основывается уже на новом интерфейсе.
В корзину добавлено одно новое поле PRODUCT_PROVIDER_CLASS, которое содержит имя класса, реализующего интерфейс IBXSaleProductProvider. Этот интерфейс и определяет интерфейс общения магазина и сущностей, которые кормят магазин товарами. Каталог записывает в это поле имя класса CCatalogProductProvider.
Обратите на это внимание, если вы пользовались какими-то хаками, чтобы добиться нужного вам поведения. Возможно вам потребуется отнаследоваться от класса CCatalogProductProvider или сделать свою собственную реализацию IBXSaleProductProvider.