Розробка функціоналу швидкого замовлення за артикулом 1С-Бітрікс

Як працює швидке замовлення за артикулом? На оптових та B2B-сайтах клієнт часто знає артикул — йому немає сенсу гортати каталог. Він хоче ввести артикул, вказати кількість і одразу додати до кошика. Ми реалізували такий блок на одному з проєктів: після запуску кількість замовлень у повторних прод
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка функціоналу швидкого замовлення за артикулом 1С-Бітрікс
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1463
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1167

Як працює швидке замовлення за артикулом?

На оптових та 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

Процес роботи

  1. Аналітика — аудит поточної структури інфоблоків, схеми зберігання артикулів, виявлення вузьких місць (навантаження, дублі).
  2. Проєктування — узгодження UI/UX, вибір способу кешування (теговане кешування ajax-запитів).
  3. Реалізація — написання AJAX-контролера, фронтенд-блока, інтеграція в кошик.
  4. Тестування — навантажувальне тестування на реальному каталозі (ми використовуємо стандартні профілі Бітрікс та Xdebug для профілювання).
  5. Деплой — викатка на бойовий сервер, моніторинг логів, налаштування кешування.

Що входить у розробку

  • AJAX-контролер пошуку за артикулом з підтримкою торгових пропозицій
  • UI-блок з динамічними рядками, автодоповненням та прев'ю товару
  • Режим масового введення (вставка списку артикул + кількість)
  • Пакетне додавання до кошика через \Bitrix\Sale\Basket
  • Обробка помилок: не знайдено, немає в наявності, кілька збігів

Вартість та окупність

Вартість базового рішення — від $500, включаючи AJAX-контролер, UI та інтеграцію з кошиком. Економія часу на повторних замовленнях дозволяє окупити блок за 2–3 місяці.

Ми — команда з 10-річним досвідом у Бітрікс, понад 50 реалізованих проєктів. Залиште заявку на безкоштовний аудит — ми перевіримо структуру вашого каталогу та запропонуємо оптимальне рішення. Отримайте консультацію інженера з впровадження функціоналу швидкого замовлення.