Настройка приемки товаров через ТСД 1С-Битрикс
Терминалы сбора данных (ТСД) в связке с Битриксом используют для складской приемки там, где нужно сканировать штрихкоды и сразу фиксировать приход в системе — без дублирования через Excel или бумажные накладные. Задача технически несложная, но требует правильного выбора точки интеграции.
Как это работает в Битриксе
Битрикс не имеет нативного модуля для ТСД. Интеграция строится через REST API или прямое обращение к складскому учёту модуля catalog. Два основных сценария:
Сценарий 1 — ТСД работает через браузер. Большинство современных ТСД (Honeywell, Zebra, Urovo) имеют встроенный браузер. В этом случае делаете мобильно-адаптированный интерфейс на Битриксе: страница приёмки с формой сканирования штрихкода, AJAX-запрос к серверу, фиксация в базе. Штрихкод считывается встроенным сканером ТСД в поле input.
Сценарий 2 — ТСД работает с приложением через API. Приложение на ТСД (обычно пишется под Android на Java/Kotlin или используется готовое, например «Клеверенс») обращается к REST-эндпоинтам Битрикса. Это надёжнее, но дороже в разработке.
Ключевые таблицы и методы
Приемка товаров в Битриксе — это операция пополнения складских остатков. Данные хранятся в:
-
b_catalog_store_product— остатки по складам -
b_catalog_store_docs— складские документы (приход/расход) -
b_catalog_store_docs_element— позиции документа
Для создания документа прихода программно используется \Bitrix\Catalog\StoreDocumentTable:
$result = \Bitrix\Catalog\StoreDocumentTable::add([
'DOC_TYPE' => \Bitrix\Catalog\StoreDocumentTable::TYPE_ARRIVAL,
'STATUS' => 'N',
'SITE_ID' => 's1',
'CREATED_BY' => $userId,
'DATE_CREATE' => new \Bitrix\Main\Type\DateTime(),
'TITLE' => 'Приемка по ТСД ' . date('d.m.Y'),
]);
$docId = $result->getId();
Позиции документа добавляются через \Bitrix\Catalog\StoreDocumentElementTable:
\Bitrix\Catalog\StoreDocumentElementTable::add([
'DOC_ID' => $docId,
'ELEMENT_ID' => $productId, // ID товара в инфоблоке
'STORE_FROM' => null,
'STORE_TO' => $storeId, // ID склада-назначения
'AMOUNT' => $quantity,
'PURCHASING_PRICE' => $price,
'CURRENCY' => 'RUB',
]);
После добавления всех позиций документ проводится — статус меняется на 'Y', и остатки обновляются автоматически.
Поиск товара по штрихкоду
ТСД передаёт штрихкод — нужно найти товар. Штрихкоды хранятся в таблице b_catalog_product_barcode. Запрос через ORM:
$barcode = \Bitrix\Catalog\ProductBarcodeTable::getList([
'filter' => ['=BARCODE' => $scannedCode],
'select' => ['PRODUCT_ID', 'BARCODE'],
'limit' => 1,
])->fetch();
Если штрихкоды не настроены в каталоге — придётся искать через свойства инфоблока (CIBlockElement::GetList с фильтром по свойству BARCODE или аналогичному).
REST API для приложения на ТСД
Если ТСД работает через приложение, выставляете REST-обработчик. В Битриксе проще всего создать компонент-контроллер в /local/ajax/ или использовать модуль rest:
POST /local/ajax/tsd-receive.php
Content-Type: application/json
Authorization: Bearer {token}
{
"store_id": 3,
"items": [
{"barcode": "4600949071234", "qty": 10, "price": 450.00},
{"barcode": "4606244001234", "qty": 5, "price": 120.00}
]
}
Авторизацию проще всего сделать через статический токен в настройках модуля или через стандартный механизм \Bitrix\Main\Engine\Controller с проверкой сессии.
На что обратить внимание
- Единицы измерения. Убедитесь, что в документах прихода и в остатках используются одинаковые единицы. Путаница между штуками и упаковками — частая ошибка.
- Множественные склады. Если складов несколько, интерфейс ТСД должен позволять выбрать склад назначения перед сканированием.
- Дублирование сканирования. ТСД может дважды передать один штрихкод при плохом соединении. Нужна защита от дублей на уровне сессии приёмки.
- Проведение документа. Не проводите документ автоматически сразу при сканировании. Дайте кладовщику просмотреть итоговый список и подтвердить.
| Этап | Время |
|---|---|
| Анализ текущей схемы складского учёта | 2–4 ч |
| Разработка API-эндпоинта / веб-интерфейса | 8–16 ч |
| Настройка поиска по штрихкоду | 2–4 ч |
| Тестирование на реальном ТСД | 4–8 ч |
| Обучение сотрудников | 1–2 ч |







