Интеграция 1С-Битрикс со сканерами штрихкодов

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс со сканерами штрихкодов
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1240
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    847
  • 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
    582
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    749
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    981

Интеграция 1С-Битрикс со сканерами штрихкодов

Сканер штрихкода — самое простое периферийное устройство: он эмулирует клавиатуру и вводит считанный код в активное поле ввода. Проблема в другом — что система делает с этим кодом: ищет товар, добавляет в заказ, проверяет позицию при сборке. Настройка интеграции — это прежде всего правильная обработка сканирования на стороне Битрикс, а не настройка самого сканера.

Типы сканеров и способы подключения

Тип Подключение Эмуляция клавиатуры Применение
USB HID USB Да Касса, приёмка
Bluetooth HID Bluetooth Да Мобильная точка
COM-port RS-232 Нет, прямая работа с портом Legacy оборудование
2D-имиджер (Honeywell, Symbol) USB/BT Да QR + штрихкод
Встроенный в ТСД USB/WiFi Через API устройства Склад

Для большинства задач в Битрикс: сканер с эмуляцией клавиатуры подключается без драйверов. Специальной настройки на стороне Битрикс не нужно — достаточно правильно обрабатывать ввод в форме.

Поиск товара по штрихкоду

Штрихкоды хранятся в Битрикс в таблице b_catalog_product_barcode. Каждый товар может иметь несколько штрихкодов (например, разные упаковки: 1 шт и блок 12 шт с разными EAN).

public static function findByBarcode(string $barcode): ?array
{
    $result = \Bitrix\Catalog\EO_ProductBarcode_Collection::wakeUp(
        \Bitrix\Catalog\ProductBarcodeTable::getList([
            'filter' => ['=BARCODE' => $barcode],
            'select' => ['PRODUCT_ID', 'BARCODE'],
        ])
    );

    $row = $result->fetch();
    if (!$row) return null;

    // Загружаем данные товара из каталога
    $product = \CIBlockElement::GetByID($row['PRODUCT_ID'])->GetNext();
    return [
        'product_id' => $row['PRODUCT_ID'],
        'name'       => $product['NAME'],
        'sku'        => $product['PROPERTY_ARTICLE_VALUE'],
        'price'      => \CCatalogProduct::GetOptimalPrice($row['PRODUCT_ID'])['PRICE']['PRICE'] ?? 0,
        'stock'      => \CCatalogProduct::GetByID($row['PRODUCT_ID'])['QUANTITY'],
    ];
}

Если штрихкод не найден в b_catalog_product_barcode — ищем в свойстве PROPERTY_BARCODE инфоблока (некоторые проекты хранят штрихкод как свойство). Унифицируем через единый метод поиска.

Добавление в корзину по штрихкоду

Компонент быстрого добавления товара для кассы или B2B-раздела:

// Обработчик ввода в поле поиска
const barcodeInput = document.getElementById('barcode-input');
barcodeInput.addEventListener('keydown', (e) => {
    if (e.key === 'Enter') {
        const barcode = e.target.value.trim();
        if (!barcode) return;

        fetch('/api/catalog/by-barcode/', {
            method: 'POST',
            headers: {'Content-Type': 'application/json', 'X-Bitrix-Csrf-Token': BX.bitrix_sessid()},
            body: JSON.stringify({barcode})
        })
        .then(r => r.json())
        .then(data => {
            if (data.error) {
                showError('Товар не найден: ' + barcode);
                return;
            }
            addToCart(data.product_id, 1);
            barcodeInput.value = '';
            barcodeInput.focus();
        });
    }
});

Ключевой момент: поле ввода штрихкода должно быть всегда в фокусе. Для касс реализуем автофокус с setInterval — сканер вводит код в любой момент.

Проверка позиции при сборке заказа

При комплектации заказа на складе: менеджер открывает заказ в административной панели Битрикс, сканирует штрихкод каждой позиции. Система подсвечивает найденную строку в заказе и ставит галочку «собрано».

Кастомная страница в /bitrix/admin/order_assembly.php:

// AJAX-обработчик сканирования
if ($_REQUEST['action'] === 'scan_barcode') {
    $barcode = trim($_REQUEST['barcode']);
    $orderId = (int)$_REQUEST['order_id'];

    $product = BarcodeService::findByBarcode($barcode);
    if (!$product) {
        echo json_encode(['status' => 'not_found', 'barcode' => $barcode]);
        exit;
    }

    // Ищем товар в позициях заказа
    $order = \Bitrix\Sale\Order::load($orderId);
    $basket = $order->getBasket();
    foreach ($basket as $item) {
        if ($item->getProductId() === $product['product_id']) {
            // Обновляем счётчик собранных
            AssemblyProgressTable::increment($orderId, $product['product_id']);
            echo json_encode(['status' => 'ok', 'item_id' => $item->getId()]);
            exit;
        }
    }
    echo json_encode(['status' => 'not_in_order', 'product' => $product['name']]);
    exit;
}

Инвентаризация через USB-сканер

Для офисной инвентаризации без ТСД: специальная страница с таблицей, куда менеджер сканирует штрихкоды с фиксическим подсчётом. Каждый скан — AJAX-запрос, который увеличивает счётчик позиции. В конце сессии — сравнение с остатками в b_catalog_store_product и экспорт расхождений.

Настройка суффиксов и префиксов сканера

Некоторые сканеры по умолчанию добавляют символы после штрихкода (Tab, Enter + Carriage Return). Настройки сканера обычно меняются сканированием конфигурационного штрихкода из мануала производителя. Для Bitrix рекомендуем: суффикс = Enter, без префикса, без CR.

Сроки

Этап Срок
API поиска товара по штрихкоду 1 день
Компонент быстрого добавления в корзину 1–2 дня
Интерфейс сборки заказа со сканером 2–3 дня
Инвентаризационный модуль 2 дня
Тестирование с реальным сканером 1 день
Итого 7–9 дней