Розробка сайту ювелірного магазину на 1С-Bitrix
Ювелірний інтернет-магазин відрізняється від типового e-commerce однією фундаментальною особливістю: значна частина асортименту — штучний товар. Два кільця з діамантом 0.5 карату можуть відрізнятися за кольором, чистотою та огранкою, а значит — за вартістю. Платформа 1С-Bitrix з модулем «Торговий каталог» (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°
Ювелірні вироби вимагають якісної візуалізації. На рівні Bitrix це означає:
-
Основне фото — властивість «Файл» у 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С | Сутність у Bitrix | Зв'язок |
|---|---|---|
| Номенклатура (модель) | Елемент інфоблока товарів | 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С: виконання характеристик номенклатури включена, кожна характеристика = унікальний
Ід. - У Bitrix: у налаштуваннях інфоблока каталогу включена опція «Торгові пропозиції», тип — «Кожна пропозиція — окремий елемент».
- Властивості SKU (вага, характеристики каменю) маппяться через налаштування обміну у розділі «Відповідність властивостей».
Якщо стандартного маппінгу недостатньо, підключається обробник події OnSuccessCatalogImport1C, який дообогачує SKU після імпорту: аналізує додаткові поля з XML та записує у властивості інфоблока.
Облік проданих екземплярів
При оформленні замовлення залишок SKU списується до 0 штук. На сайті екземпляр зникає з каталогу (фільтр по наявності у компоненті). При наступному обміні з 1С залишок синхронізується. Важливий момент — резервування: при додаванні в корзину екземпляр резервується на 30 хвилин через механізм catalog_store_barcode або кастомний обробник на події OnSaleBasketItemAdd.
ГІИС ДМДК
З 2024 року ювелірні вироби підлягають обов'язковій маркуванню в ГІИС ДМДК. Кожному виробу присвоюється унікальний ідентифікаційний знак (УІН). На сайті це реалізується як додаткова властивість SKU, яка виводиться у карточці товару та передається у документи замовлення. Інтеграція з ГІИС виконується на стороні 1С, а на сайт приходить готовий УІН через обмін.
Технічні итоги
- Продуктивність каталогу — фасетний індекс обов'язковий, перерахунок запускається по крону після кожного обміну з 1С.
- Кешування — автокешування компонентів з тегами по інфоблоку. При оновленні SKU з 1С кеш скидається автоматично.
-
Зображення — WebP-конвертація через обробник
OnBeforeResizeImage, оригіналии зберігаються для zoom. - Мобільна версія — адаптивна верстка з урахуванням того, що 360°-перегляд на мобільних переключається на swipe-галерею через обмеження продуктивності.
Архітектура «одна SKU = один екземпляр» вимагає обережної настройки обміну з 1С, але забезпечує точний облік та коректне відображення унікальних характеристик кожного виробу в каталозі.







