Разработка сайта мебельной фабрики на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка сайта мебельной фабрики на 1С-Битрикс
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка сайта мебельной фабрики на 1С-Битрикс

Мебельная фабрика работает с номенклатурой, где один товар может иметь десятки вариаций: диван в пяти обивках, трёх размерах и двух конфигурациях каркаса — это 30 торговых предложений. Кухонный гарнитур собирается из модулей, и покупатель хочет увидеть результат до заказа. Сайт на 1С-Битрикс решает обе задачи: каталог с торговыми предложениями и фасетной фильтрацией для стандартной мебели, плюс 3D-конфигуратор для модульных систем. Интеграция с 1С обеспечивает актуальность цен и остатков без ручного обновления.

Каталог мебели на торговых предложениях

Каталог строится на торговом каталоге Битрикса (модуль catalog) с использованием механизма SKU — торговых предложений. Структура разделов инфоблока: кухни, шкафы-купе, диваны и кресла, кровати, столы и стулья, мебель для ванной, офисная мебель.

Основной инфоблок «Мебель» содержит товары, к каждому из которых привязан инфоблок торговых предложений. Свойства товара:

  • Коллекция — привязка к справочнику (инфоблок «Коллекции»)
  • Стиль — список: классика, современный, лофт, скандинавский, минимализм
  • Материал каркаса — список: массив дуба, массив бука, ЛДСП, МДФ, металл
  • Страна производства — список (для импортной мебели в ассортименте)
  • Гарантия — числовое свойство (месяцы)
  • 3D-модель — файл GLTF/GLB для конфигуратора (где применимо)

Торговые предложения содержат свойства, формирующие конкретную вариацию:

  • Цвет — привязка к справочнику с HEX-кодом и фото образца
  • Материал обивки/фасада — привязка к справочнику с характеристиками
  • Размер — строковое свойство (Ш×Г×В в мм)
  • Артикул — уникальный код для синхронизации с 1С
  • Цена — через механизм цен модуля catalog (базовая, розничная, дилерская)
  • Остаток — через складской учёт модуля catalog

Фасетная фильтрация

Фильтрация по параметрам — критичный элемент для каталога с тысячами SKU. Битрикс поддерживает фасетный индекс (модуль iblock, метод \Bitrix\Iblock\PropertyIndex\Manager::buildIndex()), который строит предрассчитанные таблицы для мгновенной фильтрации.

Компонент bitrix:catalog.smart.filter выводит фильтр с параметрами:

  • Материал — чекбоксы с количеством товаров в скобках
  • Стиль — чекбоксы
  • Цена — диапазон (ползунок)
  • Размер — диапазоны по ширине, глубине, высоте
  • Цвет — визуальные плашки с образцами
  • Наличие — переключатель «В наличии / Под заказ»

Фасетный индекс перестраивается при изменении товаров через обработчик OnAfterIBlockElementUpdate. Для каталога с 5000+ SKU это даёт выигрыш в скорости фильтрации на порядок по сравнению с прямыми SQL-запросами.

Интеграция с 1С

Синхронизация работает через штатный модуль обмена catalog по протоколу CommerceML 2:

  • Номенклатура — из 1С в Битрикс: товары, торговые предложения, свойства (цвет, размер, материал)
  • Цены — из 1С: базовые, розничные, дилерские типы цен
  • Остатки — из 1С: по складам, с агрегацией для отображения на сайте
  • Заказы — из Битрикс в 1С: заказы с сайта выгружаются как заказы покупателей
  • Статусы заказов — из 1С в Битрикс: обновление статуса производства/доставки

Расписание обмена: цены и остатки — каждые 30 минут (cron), номенклатура — раз в сутки (ночной обмен), заказы — каждые 15 минут.

B2B-раздел для дилеров

Дилерский раздел закрыт авторизацией. Дилеры регистрируются через форму с подтверждением менеджером (модерация через бизнес-процесс модуля bizproc). После подтверждения пользователь добавляется в группу «Дилеры», которой доступны:

  • Дилерские цены — отдельный тип цен в модуле catalog, видимый только группе «Дилеры»
  • Расширенный каталог — разделы инфоблока с правами доступа для дилеров
  • Маркетинговые материалы — инфоблок с фото, рендерами, описаниями для каталогов дилеров
  • История заказов и взаиморасчёты — данные из 1С, выгружаемые в личный кабинет

Deep-dive: 3D-конфигуратор мебели

Конфигуратор модульной мебели — ключевое конкурентное преимущество сайта. Покупатель собирает кухню из модулей в 3D-пространстве: выбирает нижние и верхние шкафы, размещает их вдоль стен, выбирает фасады и столешницу, видит итоговую стоимость. Технически это интеграция WebGL-приложения на Three.js с данными из каталога Битрикс.

Архитектура взаимодействия

Конфигуратор — клиентское JavaScript-приложение, загружающее данные из Битрикс через REST API. Схема:

  1. При открытии конфигуратора JS запрашивает /api/configurator/modules/ — список доступных модулей с параметрами (размеры, цена, путь к 3D-модели)
  2. Данные берутся из инфоблока «Модули конфигуратора»: каждый элемент — отдельный модуль (нижний шкаф 600мм, верхний шкаф 400мм, угловой модуль и т.д.)
  3. 3D-модели хранятся в формате GLTF/GLB — оптимальный баланс между качеством и размером файла
  4. При размещении модуля на сцене Three.js обновляет итоговую спецификацию и стоимость

Модели и оптимизация

Каждый модуль существует как параметрическая 3D-модель. Для кухонного шкафа это: корпус (фиксированный), фасад (сменный — привязка к справочнику фасадов), фурнитура (ручки — сменные). Подгрузка моделей выполняется лениво: при инициализации загружаются только low-poly превью, детальная модель подгружается при размещении на сцене.

Требования к моделям:

  • Полигонаж одного модуля — до 5000 полигонов (low-poly для реального времени)
  • Текстуры — 512×512 для модулей, 1024×1024 для фасадов
  • Формат GLTF с Draco-компрессией — снижение размера файла на 70–80%
  • Группировка: корпус, фасад, столешница — отдельные mesh для замены материалов

Смена материалов и фасадов

При выборе материала фасада (например, «Дуб натуральный» → «Белый глянец») Three.js заменяет текстуру на соответствующем mesh модуля. Текстуры хранятся в Highload-инфоблоке «Материалы конфигуратора» с полями: название, тип (дерево, пластик, стекло), текстура (файл PNG), карта нормалей (файл PNG), параметры PBR (roughness, metalness).

Замена происходит через THREE.TextureLoader с кэшированием загруженных текстур в Map. При первом выборе материала текстура загружается с сервера, при повторном — берётся из кэша.

Расстановка в пространстве

Пользователь задаёт размеры помещения (длина стен, высота потолка) через ввод в форму. Three.js строит каркас комнаты. Модули привязываются к стенам через snap-логику: при перетаскивании модуль «прилипает» к ближайшей стене и соседнему модулю. Коллизии проверяются через bounding box — модули не могут пересекаться.

Ограничения размещения задаются в свойствах модуля в инфоблоке:

  • UF_WALL_TYPE — список: нижний, верхний, пенал, угловой
  • UF_SNAP_POINTS — JSON с координатами точек стыковки
  • UF_MIN_HEIGHT — минимальная высота установки от пола (для верхних модулей)

Формирование заказа

По завершении конфигурации пользователь нажимает «Оформить заказ». JavaScript формирует JSON-спецификацию: массив модулей с координатами, выбранные фасады и материалы, рендер-скриншот сцены (генерируется через renderer.domElement.toDataURL()).

JSON отправляется на сервер, где PHP-скрипт:

  1. Создаёт заказ в модуле sale с товарами-модулями из каталога
  2. Рассчитывает итоговую стоимость через привязку модулей к торговым предложениям (фасад + размер = конкретное SKU)
  3. Сохраняет скриншот и JSON-конфигурацию в свойствах заказа
  4. Выгружает заказ в 1С при следующем цикле обмена

Производительность

Конфигуратор с 15–20 модулями на сцене должен работать при 30+ FPS на среднем устройстве. Меры оптимизации:

  • Instancing для одинаковых модулей (THREE.InstancedMesh)
  • Frustum culling — Three.js отсекает объекты за пределами камеры автоматически
  • LOD — при удалении камеры модули переключаются на упрощённую геометрию
  • Тени отключены; освещение — ambient + directional без shadow map

Технические требования

Сайт разворачивается на редакции «Бизнес» — необходимы модули торгового каталога, складского учёта и обмена с 1С. Серверные требования: PHP 8.1+, PostgreSQL или MySQL, минимум 4 ГБ RAM (конвертация 3D-моделей при загрузке через админку), SSD для хранения GLTF-файлов. Композитный кэш для каталога, CDN для статики и 3D-моделей.