Розробка сайту виробничої компанії на 1С-Бітрікс
Сайт виробничої компанії — це не вітрина, а робочий інструмент для дилерів, постачальників та інженерів на стороні замовника. Головне завдання — дати технічному спеціалісту можливість знайти потрібну позицію за параметрами, завантажити специфікацію та надіслати запит на комерційну пропозицію. Все інше — вторинне.
На 1С-Бітрікс такий сайт будується навколо каталогу на інфоблоках, B2B-модуля особистого кабінету та обміну даними з 1С:УПП або 1С:ERP. Розберемо кожний блок.
Каталог продукції з технічними характеристиками
Це ядро сайту. Типовий каталог виробничої компанії містить від 500 до 50 000 позицій, у кожної — від 15 до 60 технічних властивостей. Арматура, металопрокат, електротехніка, промислове обладнання — у кожної галузі свій набір параметрів, але архітектурний підхід один.
Структура інфоблока
Каталог будується на інфоблоці типу catalog (торговий каталог). Розділи інфоблока — це дерево категорій. Для кожної категорії верхнього рівня зазвичай створюється окремий набір властивостей через механізм привʼязки властивостей до розділів (таблиця b_iblock_section_property). Це критично важливо: якщо у вас насоси й задвижки в одному інфоблоці, не потрібно показувати властивість «Діаметр умовного проходу» для позицій з категорії «Електродвигуни».
Типова конфігурація властивостей для промислового каталогу:
| Група властивостей | Приклади | Тип у Бітріксі |
|---|---|---|
| Фізичні параметри | Маса, габарити, матеріал | N (число), S (рядок) |
| Експлуатаційні | Робочий тиск, температурний діапазон, клас защиту IP | N з одиницями виміру |
| Класифікація | ГОСТ, ТУ, сертифікат відповідності | S або F (файл) |
| Медіа | Чертіж DWG, PDF-специфікація, 3D-модель STEP | F (файл) |
| Зв'язки | Супутні товари, комплектуючі, аналоги | E (привʼязка до елементів) |
| Торговельні | Артикул, од. виміру, мін. партія, термін виробництва | Властивості торгового каталогу |
Для властивостей з одиницями виміру використовується довідник b_catalog_measure. Значення зберігаються в b_iblock_element_property (звичайні властивості) та b_catalog_product (торговельні параметри).
Розумний фільтр
Компонент catalog.smart.filter працює з фасетним індексом — таблиця b_catalog_smart_filter зберігає попередньо обчислені комбінації. Без фасетного індексу фільтрація за 30+ властивостями на каталозі з 10 000 позицій генеруватиме запити на 3-5 секунд. З індексом — 50-100 мс.
Побудова фасетного індексу запускається через \Bitrix\Iblock\PropertyIndex\Manager::markAsInvalid($iblockId) та подальшу переіндексацію. При кожній зміні елемента індекс оновлюється автоматично, але після масового імпорту з 1С потрібна повна перебудова.
Для інженерних каталогів стандартного фільтра часто недостатньо. Типові доробки:
- Фільтр за діапазоном для числових властивостей (тиск від/до, температура від/до) — штатно підтримується, але вимагає налаштування відображення
- Фільтр за кількома значеннями однієї властивості з логікою OR — працює з коробки
- Перехресна фільтрація — коли вибір значення однієї властивості звужує доступні значення інших. Реалізується через AJAX-підгрузку фільтра з передачею поточних параметрів
-
Таблична порівняння вибраних позицій — компонент
catalog.compare.list, але зазвичай перепишеться повністю під завдання
PDF-специфікації та документація
Технічна документація зберігається в властивостях типу F (файл). Для кожної позиції може бути кілька документів: паспорт виробу, сертифікат, чертіж, інструкція з монтажу. Правильний підхід — множественна властивість з привʼязкою файлів або окремий Highload-блок TechDocuments з полями UF_PRODUCT_ID, UF_FILE, UF_DOC_TYPE, UF_LANGUAGE.
Генерація PDF-каталогу на льоту — окреме завдання. Зазвичай використовується бібліотека mPDF або TCPDF, що викликається з кастомного компонента. Шаблон PDF формується з даних інфоблока, результат кешується й передається користувачу.
Інтеграція з 1С:Управління виробничим підприємством
Стандартний модуль обміну catalog у Бітріксі реалізує протокол CommerceML 2 (обмін через XML-файли). Для 1С:УПП та 1С:ERP це основний шлях синхронізації номенклатури та цін.
Механізм обміну
Обмін працює через URL /bitrix/admin/1c_exchange.php та складається з етапів:
- Авторизація — 1С надсилає логін/пароль, отримує сесію
-
Вивантаження каталогу (
catalog) — файлиimport.xmlтаoffers.xmlзавантажуються на сервер - Імпорт — Бітрікс парсить XML, створює/оновлює елементи інфоблока
-
Обмін замовленнями (
sale) — двосторонній обмін статусами замовлень
Для виробничої компанії стандартного обміну зазвичай недостатньо. Проблемні місця:
-
Множественні типи цін. У 1С:УПП — роздрібна, оптова, дилерська, спеціальна для конкретного контрагента. Модуль
catalogпідтримує множественні типи цін через таблицюb_catalog_group, але маппінг з 1С потрібно налаштовувати вручну -
Остатки за складами. Таблиця
b_catalog_store_productзберігає остатки за складами (b_catalog_store). 1С:УПП може вивантажувати остатки з розбивкою за складами, але потрібна доробка обробки на стороні 1С - Характеристики номенклатури. У 1С це реалізується через «Характеристики номенклатури», у Бітріксі — через торговельні пропозиції (SKU). Маппінг один-в-один не завжди можливий, особливо якщо характеристики багаторівневі
Highload-блоки для довідників
Довідники з 1С (одиниці виміру, категорії, матеріали, ГОСТи) краще зберігати в Highload-блоках, а не в звичайних списках. Таблиця b_hlblock_entity визначає блок, дані зберігаються в автоматично створеній таблиці з префіксом. API доступу — через \Bitrix\Highloadblock\HighloadBlockTable::getById() та згенерований ORM-клас.
Обмін довідниками — окреме завдання, не охоплене стандартним CommerceML. Реалізується через REST API Бітрікса (/rest/) або кастомний endpoint, який викликається з 1С за розкладом.
B2B-функціонал
Особистий кабінет дилера
Особистий кабінет будується на модулі sale та розширюється кастомними компонентами. Базові можливості:
-
Персональні ціни — через типи цін, привʼязані до груп користувачів. Група «Дилери» бачить оптову колонку, група «Дистрибʼютори» — свою. Налаштовується в
b_catalog_group2group -
Історія замовлень — компонент
sale.personal.order.list, зазвичай кастомізований: додаєтьс' статус виробництва, трек-номер відправлення, посилання на накладну - Повтор замовлення — додавання всіх позицій з попереднього замовлення в кошик однією кнопкою
- Вивантаження в Excel — формування прайс-листа з персональними цінами для конкретного дилера
Запит комерційної пропозиції
Для виробничих компаній кошик часто працює не як оформлення замовлення, а як формування запиту на КП. Користувач додає позиції, вказує кількість, і замість оплати отримує форму «Запросити КП». Заявка йде в CRM-модуль Бітрікса (crm — лід або угода) та паралельно на пошту менеджеру.
Реалізується через кастомний обробник події OnSaleOrderBeforeSaved або повністю свій компонент, минаючи стандартне оформлення замовлення.
Додаткові модулі
Новини та статті — стандартний інфоблок, компоненти news.list / news.detail. Для виробничої компанії це галузеві новини, участь на виставках, оновлення каталогу.
Сертифікати та ліцензії — окремий інфоблок або розділ медіабібліотеки. PDF-файли з переглядом у вигляді зображення.
Калькулятор продукції — якщо номенклатура передбачає розрахунок (метраж, об'єм, нестандартні розміри). Реалізується як JS-компонент з зверненням до API каталогу для отримання цін.
Географія поставок — Яндекс.Карти API з мітками дилерів та представництв. Дані з Highload-блока DealerNetwork.
Терміни реалізації
| Масштаб проекту | Каталог | Інтеграція 1С | Особистий кабінет | Всього |
|---|---|---|---|---|
| Невеликий (до 500 позицій, базовий обмін) | 3-4 тижні | 2-3 тижні | 2 тижні | 8-10 тижнів |
| Середній (до 5 000 позицій, множественні ціни) | 5-6 тижнів | 4-5 тижнів | 3-4 тижні | 14-18 тижнів |
| Великий (10 000+ позицій, повна інтеграція з УПП/ERP) | 8-10 тижнів | 6-8 тижнів | 5-6 тижнів | 22-28 тижнів |
Вузьке місце — завжди інтеграція з 1С. Залежить від того, наскільки стандартизована конфігурація на стороні замовника та є ли виділений 1С-спеціаліст для доробки обміну.







