Як працює швидке замовлення за артикулом?
На оптових та B2B-сайтах клієнт часто знає артикул — йому немає сенсу гортати каталог. Він хоче ввести артикул, вказати кількість і одразу додати до кошика. Ми реалізували такий блок на одному з проєктів: після запуску кількість замовлень у повторних продажах зросла на 40%. Стандартний компонент search.title для цього завдання не підходить — він шукає за назвою, не індексує артикули та гальмує на каталогах від 10 000 товарів. Миттєве замовлення за кодом товару — окремий UI-блок з прямим запитом до бази за індексованим полем. Це рішення окупається за 2-3 місяці за рахунок збільшення повторних продажів.
Чому стандартний пошук не підходить?
Компонент bitrix:search.title використовує повнотекстовий пошук по b_search_content, що дає затримки 200–500 мс на каталогах від 30 000 товарів і не гарантує точного збігу артикула. Наш AJAX-контролер безпосередньо звертається до b_iblock_element_property з фільтром за властивістю артикула — час відповіді 10–50 мс з правильним індексом. Як зазначається в офіційній документації Бітрікс, для масового пошуку за властивістю необхідно використовувати прямий SQL-запит з індексом. Наш AJAX-контролер швидший за стандартний пошук у 4–10 разів.
| Параметр | Стандартний пошук | Швидке замовлення за артикулом |
|---|---|---|
| Час запиту (50 000 товарів) | 200–500 мс | 10–50 мс |
| Точність збігу | Не гарантує | 100% по індексованому полю |
| Масове введення | Ні | Так (вставка списку артикул-кількість) |
| Підтримка SKU | Через модифікацію | З коробки |
Коли групове додавання ефективніше за ручне?
При завантаженні кількох десятків позицій ручне введення кожного артикула забирає час. Групове додавання через вставку тексту або файлу прискорює процес у 5–10 разів. Ми реалізували вкладку, куди можна вставити список у форматі артикул кількість — парсинг на стороні клієнта, потім пакетний AJAX-запит для перевірки всіх артикулів.
| Сценарій | Ручне введення | Масове введення |
|---|---|---|
| 1 товар | 10–15 сек | 5–10 сек |
| 10 товарів | 2–3 хв | 20–30 сек |
| 50 товарів | 10–15 хв | 1–2 хв |
Пошук товару за артикулом
Артикул у Бітрікс зберігається у властивості інфоблоку (PROPERTY_ARTICLE) або в полі XML_ID елемента. Для торгових пропозицій — у властивості оферів (PROPERTY_CML2_ARTICLE при імпорті з 1С). Артикули надходять з 1С через CommerceML — стандарт комерційного обміну 1С. Для продуктивності на каталогах від 50 000 SKU обов'язково створити індекс на колонку властивості:
CREATE INDEX idx_iblock_prop_article ON b_iblock_element_property (IBLOCK_PROPERTY_ID, VALUE) WHERE VALUE IS NOT NULL; Приклад AJAX-контролера пошуку
public function searchByArticleAction(string $query): array { $result = []; // Пошук серед торгових пропозицій $offerIblockId = \CCatalogSKU::GetInfoByProductIBlock(CATALOG_IBLOCK_ID)['IBLOCK_ID']; $rs = \CIBlockElement::GetList( ['NAME' => 'ASC'], [ 'IBLOCK_ID' => $offerIblockId, 'PROPERTY_CML2_ARTICLE' => '%' . $query . '%', 'ACTIVE' => 'Y', ], false, ['nTopCount' => 10], ['ID', 'NAME', 'IBLOCK_ELEMENT_ID', 'PROPERTY_CML2_ARTICLE'] ); while ($item = $rs->Fetch()) { $result[] = [ 'sku_id' => (int)$item['ID'], 'product_id' => (int)$item['IBLOCK_ELEMENT_ID'], 'article' => $item['PROPERTY_CML2_ARTICLE_VALUE'], 'name' => $item['NAME'], ]; } return $result; } Інтерфейс швидкого замовлення
Блок являє собою таблицю з динамічними рядками: кожен рядок — поле артикула з автодоповненням, поле кількості та кнопка видалення. Внизу кнопка «Додати все до кошика». Автодоповнення реалізується через debounce(300ms) на полі введення: при введенні від 3 символів відправляється AJAX-запит до searchByArticleAction, результати показуються у випадаючому списку. При виборі товару рядок заповнюється даними, показується прев'ю (мініатюра, назва, поточна ціна). Ми використовуємо теговане кешування для автодоповнення, щоб знизити навантаження на базу.
Групове додавання — додаткова вкладка, де можна вставити текст у форматі:
АРТИКУЛ КІЛЬКІСТЬ ABC-123 5 XYZ-456 10 Парсинг на JS, потім пакетний AJAX-запит для резолвінгу всіх артикулів одразу.
Додавання до кошика
Після підтвердження — пакетне додавання до кошика через \Bitrix\Sale\Basket:
$basket = \Bitrix\Sale\Basket::loadForItemsFUser( \Bitrix\Sale\Fuser::getId(), SITE_ID ); foreach ($items as $item) { $basketItem = $basket->createItem('catalog', $item['product_id']); $basketItem->setFields([ 'QUANTITY' => $item['quantity'], 'PRODUCT_PROVIDER_CLASS' => \Bitrix\Catalog\Product\Basket::class, 'MODULE' => 'catalog', ]); } $basket->save(); При додаванні торгових пропозицій передається PRODUCT_ID офера з прив'язкою до батьківського елемента через PROPS — обов'язково при використанні SKU. Для роботи з кошиком використовуйте клас \Bitrix\Sale\Basket — це основа роботи з кошиком у Бітрікс.
Обробка помилок
- Артикул не знайдено → рядок підсвічується червоним, підказка «Товар не знайдено»
- Товар не в наявності → попередження з кількістю на залишку з
b_catalog_store_product - Кілька збігів за артикулом → діалог вибору потрібного SKU
Процес роботи
- Аналітика — аудит поточної структури інфоблоків, схеми зберігання артикулів, виявлення вузьких місць (навантаження, дублі).
- Проєктування — узгодження UI/UX, вибір способу кешування (теговане кешування ajax-запитів).
- Реалізація — написання AJAX-контролера, фронтенд-блока, інтеграція в кошик.
- Тестування — навантажувальне тестування на реальному каталозі (ми використовуємо стандартні профілі Бітрікс та Xdebug для профілювання).
- Деплой — викатка на бойовий сервер, моніторинг логів, налаштування кешування.
Що входить у розробку
- AJAX-контролер пошуку за артикулом з підтримкою торгових пропозицій
- UI-блок з динамічними рядками, автодоповненням та прев'ю товару
- Режим масового введення (вставка списку артикул + кількість)
- Пакетне додавання до кошика через
\Bitrix\Sale\Basket - Обробка помилок: не знайдено, немає в наявності, кілька збігів
Вартість та окупність
Вартість базового рішення — від $500, включаючи AJAX-контролер, UI та інтеграцію з кошиком. Економія часу на повторних замовленнях дозволяє окупити блок за 2–3 місяці.
Ми — команда з 10-річним досвідом у Бітрікс, понад 50 реалізованих проєктів. Залиште заявку на безкоштовний аудит — ми перевіримо структуру вашого каталогу та запропонуємо оптимальне рішення. Отримайте консультацію інженера з впровадження функціоналу швидкого замовлення.







