Разработка сайта производственной компании на 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-файлы с preview в виде изображения.
Калькулятор продукции — если номенклатура подразумевает расчёт (метраж, объём, нестандартные размеры). Реализуется как 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С-специалист для доработки обмена.







