Разработка функционала быстрого заказа по артикулу 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка функционала быстрого заказа по артикулу 1С-Битрикс
Средний
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1322
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    915
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    811
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    710
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Как работает быстрый заказ по артикулу

На оптовых и 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-запрос с индексом.

Параметр Стандартный поиск Быстрый заказ по артикулу
Время запроса (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\BasketItem:

$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.

Обработка ошибок

  • Артикул не найден → строка подсвечивается красным, подсказка «Товар не найден»
  • Товар не в наличии → предупреждение с количеством на остатке из b_catalog_store_product
  • Несколько совпадений по артикулу → диалог выбора нужного SKU

Процесс работы

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

Что входит в разработку

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

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