Архітектура кастомної PIM на Бітрікс: від атрибутів до синдикації
Уявіть каталог із 15 000 товарів, кожен із 60 унікальними атрибутами. Стандартні інфоблоки гальмують, адміністраторам не вистачає гнучкості, а інтеграція з маркетплейсами перетворюється на пекло. Ми побудували 15 кастомних PIM-систем на 1С-Бітрікс і виконали понад 30 впроваджень. Маємо 7+ років досвіду в розробці на Бітрікс та 5+ років на ринку. Кастомна 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.
Як налаштувати кастомну PIM
Крок 1: Спроектувати схему атрибутів: визначити фіксовані та динамічні атрибути для кожної категорії. Ми готуємо прототип таблиць.
Крок 2: Розгорнути кастомні таблиці: виконати міграції для створення b_pim_attribute, b_pim_attribute_value та індексів.
Крок 3: Налаштувати адміністративний інтерфейс: використовувати наш компонент на основі bitrix:main.ui.grid для керування атрибутами.
Цей процес займає 2–3 дні для досвідченого розробника.
Чому кастомна PIM вигідніша за готові рішення?
Кастомна PIM на Бітрікс швидша за Akeneo в 2-3 рази, впроваджується в 2–3 рази швидше і не вимагає ліцензійних відрахувань. Порівняння PIM vs Akeneo показує явні переваги. Оптимізація запитів підвищує продуктивність каталогу. Порівняння вартості:
| Критерій | Кастомна PIM на Бітрікс | Akeneo / Pimcore |
|---|---|---|
| Вартість ліцензії | $? (входить в екосистему) | Від $20 000–$50 000 на рік |
| Час впровадження | 2–8 тижнів | 3–6 місяців |
| Гнучкість під специфіку | Максимальна | Обмежена API |
| Продуктивність до 100k SKU | Відмінна | Залежить від сервера |
Економія на ліцензіях може досягати $15 000–$30 000 на рік, окупаючи розробку за перший рік. Наприклад, для каталогу 50 000 SKU економія становить понад $20 000 на рік. Вартість розробки базової версії кастомної PIM — від $5 000, розширеної з повною синдикацією — від $10 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" ); Інтерфейс дозволяє менеджеру:
- Додавати атрибути до категорії без зміни структури БД
- Задавати тип, обов'язковість, можливість фільтрації
- Сортувати атрибути перетягуванням
- Копіювати набір атрибутів у дочірню категорію
Форма редагування товару відображає динамічні атрибути поточної категорії. Валідація обов'язкових атрибутів виконується при збереженні.
Кастомна PIM експортує дані в формати: Яндекс.Маркет (YML), Ozon, Wildberries (JSON), Google Merchant. Виконується експорт YML Ozon Wildberries за допомогою підготовлених шаблонів. Синдикація контенту відбувається автоматично за графіком.
Процес, обсяг робіт та тестування
Що входить в роботу:
- Технічне завдання та прототип схеми даних
- Розробка 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 товарів.
- Забути про асинхронне збереження атрибутів — блокує інтерфейс при редагуванні.
Часті питання
Що таке кастомна PIM? Кастомна PIM (Product Information Management) — це система управління продуктовою інформацією, розроблена індивідуально під завдання бізнесу. В контексті 1С-Бітрікс це означає, що Бітрікс стає мастер-системою для всіх даних про товари, дозволяючи керувати атрибутами, валідувати їх та синдикувати на канали продажів.
Коли потрібна кастомна PIM на Бітрікс? Коли торговий каталог перевищує 10 000 товарів з великою кількістю атрибутів, стандартні інфоблоки перестають справлятися. Кастомна PIM виправдана, якщо команда працює в екосистемі Бітрікс, бюджет на готове рішення обмежений, або вимоги до атрибутів унікальні і не покриваються типовими PIM.
Скільки часу займає розробка? Базова версія з динамічними атрибутами та формою редагування — 2-3 тижні. Повноцінна система з валідацією, сортуванням та синдикацією — 4-8 тижнів.
З якими маркетплейсами інтегрується? Кастомна PIM вміє експортувати товари в Яндекс.Маркет (YML), Ozon, Wildberries та Google Merchant через підготовлені шаблони. Можлива інтеграція з будь-яким каналом, що підтримує XML або JSON.
Які переваги перед готовими рішеннями? Відсутність ліцензійних відрахувань, повна гнучкість під бізнес-процеси, не потрібен окремий сервер, а час впровадження в 2-3 рази менший. При каталозі до 100 000 SKU продуктивність не поступається комерційним PIM.
Замовте розробку
Оцінимо ваш проект за 1 день, підготуємо комерційну пропозицію з точними термінами. Отримайте консультацію інженера — напишіть нам.







