Архитектура кастомной PIM на Битрикс: от атрибутов до синдикации
Представьте каталог из 15 000 товаров, каждый с 60 уникальными атрибутами. Стандартные инфоблоки тормозят, администраторам не хватает гибкости, а интеграция с маркетплейсами превращается в ад. Мы построили 15 кастомных PIM-систем на 1С-Битрикс и выполнили более 30 внедрений. Кастомная PIM решает эти задачи без перехода на сторонний софт — Битрикс становится единой мастер-системой для данных о товарах. Product Information Management (PIM) — это подход, который мы адаптируем под экосистему 1С-Битрикс, сохраняя скорость внедрения и отсутствие лицензионных отчислений. Как указано в документации 1С-Битрикс, инфоблоки v2.0 поддерживают EAV-модель, но при масштабировании мы используем гибридный подход.
Как устроена архитектура данных?
Стандартный инфоблок хранит свойства в b_iblock_element_property по модели EAV. При 50+ атрибутах и высоком трафике это даёт проблемы производительности. Для кастомной PIM используем гибридный подход: фиксированные атрибуты (название, описание, изображения) — в полях инфоблока, а динамические — в кастомных таблицах.
CREATE TABLE b_pim_attribute ( ID INT AUTO_INCREMENT PRIMARY KEY, IBLOCK_SECTION_ID INT, CODE VARCHAR(100) NOT NULL, NAME VARCHAR(255) NOT NULL, TYPE ENUM('string','number','boolean','list','multilist') DEFAULT 'string', IS_REQUIRED TINYINT(1) DEFAULT 0, IS_FILTERABLE TINYINT(1) DEFAULT 0, SORT INT DEFAULT 100, INDEX idx_section (IBLOCK_SECTION_ID) ); CREATE TABLE b_pim_attribute_value ( ID INT AUTO_INCREMENT PRIMARY KEY, PRODUCT_ID INT NOT NULL, ATTRIBUTE_ID INT NOT NULL, VALUE_STRING VARCHAR(1000), VALUE_NUMBER DECIMAL(15,4), VALUE_BOOLEAN TINYINT(1), INDEX idx_product_attr (PRODUCT_ID, ATTRIBUTE_ID) ); CREATE TABLE b_pim_attribute_option ( ID INT AUTO_INCREMENT PRIMARY KEY, ATTRIBUTE_ID INT NOT NULL, VALUE VARCHAR(500) NOT NULL, SORT INT DEFAULT 100 ); Такой подход позволяет задавать атрибуты на уровне категории без изменения схемы инфоблока. Подробнее о CommerceML.
Как начать: три шага
- Спроектировать схему атрибутов: определить фиксированные и динамические атрибуты для каждой категории. Мы подготавливаем прототип таблиц.
- Развернуть кастомные таблицы: выполнить миграции для создания
b_pim_attribute,b_pim_attribute_valueи индексов. - Настроить административный интерфейс: использовать наш компонент на основе
bitrix:main.ui.gridдля управления атрибутами.
Этот процесс занимает 2–3 дня для опытного разработчика.
Почему кастомная PIM выгоднее готовых решений?
Кастомная PIM на Битрикс внедряется в 2–3 раза быстрее, чем Akeneo Enterprise, и не требует лицензионных отчислений. Сравнение стоимости:
| Критерий | Кастомная PIM на Битрикс | Akeneo / Pimcore |
|---|---|---|
| Стоимость лицензии | $? (входит в экосистему) | От $20 000–$50 000 в год |
| Время внедрения | 2–8 недель | 3–6 месяцев |
| Гибкость под специфику | Максимальная | Ограничена API |
| Производительность до 100k SKU | Отличная | Зависит от сервера |
Экономия на лицензиях может достигать $15 000–$30 000 в год, окупая разработку за первый год.
Пример генерации YML-фида
function buildYmlOffer(int $productId): array { $connection = \Bitrix\Main\Application::getConnection(); $values = $connection->query( "SELECT a.CODE, v.VALUE_STRING, v.VALUE_NUMBER FROM b_pim_attribute_value v JOIN b_pim_attribute a ON a.ID = v.ATTRIBUTE_ID WHERE v.PRODUCT_ID = {$productId}" ); $params = []; while ($row = $values->fetch()) { $params[$row['CODE']] = $row['VALUE_STRING'] ?? $row['VALUE_NUMBER']; } return $params; } Как мы реализуем интерфейс управления атрибутами?
Кастомный административный раздел на базе компонента bitrix:main.ui.grid:
// /local/modules/company.pim/admin/attributes.php require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php'; $APPLICATION->SetTitle('PIM: Управление атрибутами'); $sectionId = (int)$_GET['section_id']; $connection = \Bitrix\Main\Application::getConnection(); $attributes = $connection->query( "SELECT * FROM b_pim_attribute WHERE IBLOCK_SECTION_ID = {$sectionId} ORDER BY SORT" ); Интерфейс позволяет менеджеру:
- Добавлять атрибуты к категории without изменения структуры БД
- Задавать тип, обязательность, возможность фильтрации
- Сортировать атрибуты перетаскиванием
- Копировать набор атрибутов в дочернюю категорию
Форма редактирования товара отображает динамические атрибуты текущей категории. Валидация обязательных атрибутов выполняется при сохранении.
Синдикация на несколько каналов
Кастомная PIM экспортирует данные в форматы: Яндекс.Маркет (YML), Ozon, Wildberries (JSON), Google Merchant. Пример генерации фида показан выше.
Что входит в работу?
- Техническое задание и прототип схемы данных
- Разработка core-функционала (таблицы, форма редактирования, валидация)
- Кастомный административный интерфейс с сортировкой и копированием атрибутов
- Экспортёры для маркетплейсов (YML, JSON, XML)
- Документация и передача исходных кодов
- Обучение администраторов работе с системой
- Гарантийная поддержка в течение месяца
Процесс и сроки работы
| Этап | Длительность | Результат |
|---|---|---|
| Аналитика и проектирование | 3–5 дней | Техническое задание, прототип схемы |
| Разработка core-функционала | 2–3 недели | Таблицы, форма редактирования, сохранение |
| Валидация и UI-улучшения | 1–2 недели | Кастомная админка, сортировка, копирование |
| Синдикация и массовое редактирование | 2–3 недели | Экспортёры, bulk edit |
| Тестирование и документация | 1 неделя | Отчёт о нагрузочном тестировании, документация |
Общая длительность — от 2 до 8 недель в зависимости от объёма функционала. Свяжитесь с нами для точной оценки вашего проекта.
Как мы тестируем производительность?
Проводим нагрузочное тестирование с помощью ab и jmeter, имитируя 500 одновременных запросов. Проверяем время генерации YML-фида (менее 10 секунд для 50 000 товаров). При необходимости добавляем тегированное кэширование.
Типичные ошибки при разработке
- Использовать только свойства инфоблоков (EAV) для всех атрибутов — приводит к тормозам при массовых выборках.
- Не создавать индексы на кастомных таблицах — запросы становятся медленными уже на 10 000 товаров.
- Забыть про асинхронное сохранение атрибутов — блокирует интерфейс при редактировании.
Закажите разработку
Оценим ваш проект за 1 день, подготовим коммерческое предложение с точными сроками. Получите консультацию инженера — напишите нам.







