Стоимости товара в зависимости от выбранного цвета в CMS 1С-Битрикс

Разработали специальный функционал для клиента, который занимается производством полотенцесушителей, чтобы покупатель, перед добавлением товара в корзину, мог выбрать цвет, в который перекрасить изделие. Сложность задачи была в том, что выбор цвета влияет на стоимость изделия (цена перекраски), при этом в зависимости от размера изделия.

Как мы знаем, в 1С-Битрикс есть поддержка товаров с торговыми предложениями. Более того, у клиента размеры модельного ряда занесены именно торговыми предложениями и имеют различную цену. Выглядит это примерно так:

Торговые предложения

Вносить различные цветовые решения торговыми предложениями не подходит, т.к. все товары управляются в полуавтоматическом режиме (через эксельку, либо в админке). А цветов для перекраски сейчас используется 220 штук. При условии, что в производстве около 200 моделей изделий, а в каждой модели в среднем 10 размеров, то получается 200*10*220 = 440 000 торговых предложений. Это многовато для ручного управления. А на самом деле там еще есть опции, которые не влияют на стоимость. Если их тоже использовать, как свойства торговых предложений, то количество торговых предложений увеличится еще в разы.

Поэтому, было принято волевое решение переписать функционал добавления товаров в корзину, использовать пользовательские характеристики при добавлении товара в корзину, в которых будет записано, какой цвет выбрал покупатель. На основании выбранного цвета менять стоимость добавляемого товара в корзину. И не забыть про фронтенд, сделать удобный выбор цвета (их ведь 220 штук), чтобы покупатель видел как при этом меняется цена. Поработать пришлось много. В результате, получилось так:

Выбор цвета в карточке товара

Цена перекраски зависит не от цвета, а от размера изделия. Чтобы удобно было управлять стоимостью перекраски (изначально изделие изготавливается в хроме), добавили HL блок с таблицей размеров и цен. Эта таблица используется в расчетах и клиент сам может менять цены. Выглядит так:

Стоимость в зависимости от размера

В целом, все получилось очень удобно и понятно как для покупателя, так и администратора магазина. Работает быстро. При обработке заказов в админке выглядит так:

В заказе