Разработка сайта ювелирного магазина на 1С-Битрикс
Ювелирный интернет-магазин отличается от типового e-commerce одной фундаментальной особенностью: значительная часть ассортимента — штучный товар. Два кольца с бриллиантом 0.5 карат могут отличаться по цвету, чистоте и огранке, а значит — по стоимости. Платформа 1С-Битрикс с модулем «Торговый каталог» (sale + catalog) позволяет выстроить учёт поштучно, но стандартная логика торговых предложений требует адаптации.
Каталог украшений — инфоблок и торговые предложения
Структура каталога строится на инфоблоке товаров с привязанным инфоблоком SKU (торговых предложений). Основной инфоблок содержит карточку модели, а SKU — конкретные экземпляры:
Свойства основного инфоблока (модель):
- Тип изделия — список: кольца, серьги, подвески, браслеты, цепи, броши, колье.
- Коллекция — привязка к элементам инфоблока коллекций.
- Металл — список с множественным выбором: золото 585, золото 750, платина 950, серебро 925.
- Вставка (камень) — список: бриллиант, изумруд, сапфир, рубин, без вставки.
- Стиль — список: классика, современный, винтаж.
- Описание модели, рекомендации по уходу — HTML-свойства.
Свойства SKU (конкретный экземпляр):
- Артикул — уникальный идентификатор экземпляра. Строковое свойство, обязательное, с контролем уникальности.
- Проба — число.
- Вес изделия (г) — число с точностью до сотых.
- Размер — число (для колец и браслетов).
- Характеристики камня — группа свойств: караты, цвет (GIA-шкала), чистота, огранка.
- Сертификат — файл (скан геммологического сертификата).
- Фото экземпляра — множественное свойство «Файл».
Такая двухуровневая структура позволяет отображать карточку модели с перечнем доступных экземпляров. Пользователь выбирает не абстрактный «размер 17», а конкретное изделие с уникальным весом и характеристиками камня.
Расширенная фильтрация
Фильтрация ювелирного каталога сложнее, чем в типовом магазине, из-за комбинаторики параметров. Реализация через bitrix:catalog.smart.filter с фасетным индексом:
- Металл — чекбоксы.
- Камень — чекбоксы.
- Тип изделия — чекбоксы.
- Ценовой диапазон — ползунок (range slider).
- Размер — ползунок или выпадающий список.
- Вес — ползунок.
Фасетный индекс (b_catalog_smart_filter) пересчитывается при обновлении товаров из 1С. Для каталога с 5000+ SKU фасеты обязательны — без них фильтрация деградирует до нескольких секунд на запрос.
Визуализация: фото, zoom, 360°
Ювелирные изделия требуют качественной визуализации. На уровне Битрикс это означает:
-
Основное фото — свойство «Файл» в SKU. Загружается в высоком разрешении (минимум 2000×2000 px). Ресайз через
CFile::ResizeImageGetдля превью (400×400), каталога (800×800) и zoom (оригинал). - Zoom — на детальной странице подключается библиотека (drift или elevate-zoom) с загрузкой оригинала по наведению.
- 360° поворот — серия из 24–36 кадров, снятых на поворотном столе. Хранятся как множественное свойство «Файл» в фиксированном порядке. На фронте — JS-плеер, перелистывающий кадры по drag/swipe.
- Видео на модели — URL YouTube/Vimeo в строковом свойстве, встраивается через iframe с ленивой загрузкой.
Подбор размера кольца
Онлайн-инструмент для определения размера. Два варианта реализации:
- По имеющемуся кольцу — пользователь прикладывает кольцо к экрану, масштабирует круг на экране до совпадения. Требует калибровки по диагонали экрана (определяется через JS или вводится вручную).
- По обхвату пальца — инструкция + поле ввода длины нитки в мм, пересчёт в размер по таблице.
Таблица соответствия хранится в Highload-блоке или в конфиге компонента. Результат подбора сохраняется в сессии и подставляется в фильтр каталога.
Гравировка и кастомизация
Дополнительные услуги при оформлении заказа реализуются через механизм свойств корзины в модуле sale:
- При добавлении товара в корзину отображается форма: текст гравировки (до 20 символов), шрифт (выбор из 3–5 вариантов), подарочная упаковка.
- Значения сохраняются как свойства элемента корзины (
CSaleBasket::Updateс массивомPROPS). - На стороне менеджера — свойства видны в заказе и передаются в печатные формы.
Интеграция с 1С: поштучный учёт
Стандартный обмен через CommerceML подразумевает, что товар — это модель с вариантами (размер, цвет). В ювелирном бизнесе каждый экземпляр уникален. Это требует модификации обмена.
Deep-dive: каталог с поштучным учётом и уникальными артикулами
Проблема стандартного обмена
В типовом CommerceML-обмене торговое предложение идентифицируется комбинацией характеристик: «Кольцо, золото 585, размер 17» может быть в количестве 10 штук. В ювелирном учёте «Кольцо, золото 585, размер 17, вес 3.82 г, бриллиант 0.31 ct VS1 G» — это одно конкретное изделие с артикулом R-585-1742. Его нельзя объединять с другим кольцом того же размера, потому что вес, камень и стоимость различаются.
Архитектура решения
Каждый экземпляр выгружается из 1С как отдельное торговое предложение с уникальным XML_ID, совпадающим с артикулом. Остаток всегда 0 или 1. Схема:
| Сущность в 1С | Сущность в Битрикс | Связь |
|---|---|---|
| Номенклатура (модель) | Элемент инфоблока товаров | XML_ID модели |
| Характеристика номенклатуры (экземпляр) | SKU (торговое предложение) | XML_ID экземпляра = артикул |
| Цена экземпляра | Цена SKU (b_catalog_price) |
Привязка по SKU ID |
| Остаток (0/1) | Складской учёт (b_catalog_store_product) |
Склад + SKU ID |
Модификация обработчика обмена
Стандартный обработчик /bitrix/admin/1c_exchange.php обрабатывает импорт корректно, если в 1С правильно настроена выгрузка характеристик как отдельных предложений. Ключевые настройки:
- В 1С: выгрузка характеристик номенклатуры включена, каждая характеристика = уникальный
Ид. - В Битрикс: в настройках инфоблока каталога включена опция «Торговые предложения», тип — «Каждое предложение — отдельный элемент».
- Свойства SKU (вес, характеристики камня) маппятся через настройки обмена в разделе «Соответствие свойств».
Если стандартного маппинга недостаточно, подключается обработчик события OnSuccessCatalogImport1C, который дообогащает SKU после импорта: парсит дополнительные поля из XML и записывает в свойства инфоблока.
Учёт проданных экземпляров
При оформлении заказа остаток SKU списывается до 0 штука. На сайте экземпляр пропадает из каталога (фильтр по наличию в компоненте). При следующем обмене с 1С остаток синхронизируется. Важный момент — резервирование: при добавлении в корзину экземпляр резервируется на 30 минут через механизм catalog_store_barcode или кастомный обработчик на событии OnSaleBasketItemAdd.
ГИИС ДМДК
С 2024 года ювелирные изделия подлежат обязательной маркировке в ГИИС ДМДК. Каждому изделию присваивается уникальный идентификационный знак (УИН). На сайте это реализуется как дополнительное свойство SKU, которое выводится в карточке товара и передаётся в документы заказа. Интеграция с ГИИС выполняется на стороне 1С, а на сайт приходит готовый УИН через обмен.
Технические итоги
- Производительность каталога — фасетный индекс обязателен, пересчёт запускается по крону после каждого обмена с 1С.
- Кеширование — автокеширование компонентов с тегами по инфоблоку. При обновлении SKU из 1С кеш сбрасывается автоматически.
-
Изображения — WebP-конвертация через обработчик
OnBeforeResizeImage, оригиналы хранятся для zoom. - Мобильная версия — адаптивная вёрстка с учётом того, что 360°-просмотр на мобильных переключается на свайп-галерею из-за ограничений производительности.
Архитектура «одно SKU = один экземпляр» требует аккуратной настройки обмена с 1С, но обеспечивает точный учёт и корректное отображение уникальных характеристик каждого изделия в каталоге.







