Каталог Битрикс: скрытые торговые предложения и поломка script.js карточки
Контекст
В настройках компонента каталога часто включают показ недоступного товара в списке, но скрывают недоступные торговые предложения. Тогда карточка может оказаться без единого видимого SKU.
Почему ломается JS
В шаблоне catalog.element логика JCCatalogElement ветвится по полю типа продукта. Для SKU ожидается инициализация предложений; если массива офферов фактически нет, внутренний код помечает конфигурацию как ошибочную и отключает интерактив (переключение картинок, табов и т.д.).
Практический фикс в шаблоне
Перед разбором productType проверьте, что this.params.OFFERS — осмысленный массив. Когда офферов нет, безопасно трактовать карточку как обычный товар без SKU и вызывать инициализацию простого продукта.
// Условие в script.js шаблона рядом с инициализацией JCCatalogElement
if (!BX.type.isArray(this.params.OFFERS)) {
this.productType = 1;
}После правки перепроверьте кеш композита и браузера: статический script.js должен обновиться на боевой копии.
Альтернативы
Иной путь — менять режим показа офферов или контент‑политику товара так, чтобы в карточке всегда оставался хотя бы один доступный SKU, но это уже продуктовое решение, а не патч скрипта.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии