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

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

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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

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

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

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

Для більшості завдань у 1С-Бітрікс: сканер з емуляцією клавіатури підключається без драйверів. Спеціального налаштування на стороні 1С-Бітрікс не потрібно — достатньо правильно обробляти введення у формі.

Пошук товару за штрих-кодом

Штрих-коди зберігаються в 1С-Бітрікс у таблиці 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 — сканер вводить код у будь-який момент.

Перевірка позиції при комплектації замовлення

При комплектації замовлення на складі: менеджер відкриває замовлення в адміністративній панелі 1С-Бітрікс, сканує штрих-код кожної позиції. Система підсвічує знайдений рядок у замовленні і ставить галочку «зібрано».

Кастомна сторінка в /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). Налаштування сканера зазвичай змінюються скануванням конфігураційного штрих-коду з посібника виробника. Для 1С-Бітрікс рекомендуємо: суфікс = Enter, без префікса, без CR.

Терміни

Етап Термін
API пошуку товару за штрих-кодом 1 день
Компонент швидкого додавання в кошик 1–2 дні
Інтерфейс комплектації замовлення зі сканером 2–3 дні
Інвентаризаційний модуль 2 дні
Тестування з реальним сканером 1 день
Разом 7–9 днів