Інтеграція 1С-Бітрікс із терміналами збору даних (ТЗД)
ТЗД — це ручний сканер із вбудованим комп'ютером під Android або Windows CE/Mobile, який складські співробітники використовують для приймання, інвентаризації, комплектації замовлень і переміщення товарів. Проблема без інтеграції з 1С-Бітрікс: співробітник сканує штрих-коди на ТЗД, дані залишаються на пристрої, потім хтось вручну переносить їх у систему. Затримка, помилки введення, розбіжності залишків.
Архітектура взаємодії
ТЗД не звертається безпосередньо до БД 1С-Бітрікс — це порушення безпеки і технічно нереалізовано в більшості випадків. Правильна архітектура: ТЗД ↔ REST API на стороні 1С-Бітрікс ↔ модуль catalog / sale.
На стороні 1С-Бітрікс реалізуємо набір API-ендпоінтів, ТЗД працює з ними по Wi-Fi складу. Для офлайн-роботи ТЗД зберігає завдання локально і синхронізується при появі з'єднання.
REST API для ТЗД
Створюємо контролер /api/tsd/v1/ з методами:
Отримання завдання на комплектацію:
GET /api/tsd/v1/tasks/{task_id}
Authorization: Bearer {token}
Відповідь містить список позицій замовлення: product_id, barcode, name, qty_required, location (місце на складі з властивості товару WAREHOUSE_LOCATION).
Підтвердження сканування позиції:
POST /api/tsd/v1/tasks/{task_id}/scan
{
"barcode": "4601234567890",
"qty_scanned": 1,
"location": "A-02-05"
}
Контролер перевіряє штрих-код через \Bitrix\Catalog\ProductTable (поле BARCODE або пов'язана таблиця b_catalog_product_barcode), знаходить відповідну позицію завдання, оновлює лічильник.
Завершення завдання:
POST /api/tsd/v1/tasks/{task_id}/complete
При завершенні завдання комплектації: всі позиції зібрані → замовлення переходить у статус «Готово до відвантаження», відправляється сповіщення менеджеру.
Інвентаризація через ТЗД
Для інвентаризації створюємо завдання типу inventory:
class TsdInventoryTask
{
public function create(int $warehouseId, array $productIds = []): array
{
// Створюємо запис у bl_tsd_inventory_task
$taskId = InventoryTaskTable::add([
'WAREHOUSE_ID' => $warehouseId,
'STATUS' => 'pending',
'CREATED_BY' => $GLOBALS['USER']->GetID(),
])->getId();
// Завантажуємо очікувані залишки з b_catalog_store_product
$expected = \Bitrix\Catalog\StoreProductTable::getList([
'filter' => ['STORE_ID' => $warehouseId],
'select' => ['PRODUCT_ID', 'AMOUNT'],
]);
while ($row = $expected->fetch()) {
InventoryItemTable::add([
'TASK_ID' => $taskId,
'PRODUCT_ID' => $row['PRODUCT_ID'],
'QTY_SYSTEM' => $row['AMOUNT'],
'QTY_ACTUAL' => null, // заповнить ТЗД
]);
}
return ['task_id' => $taskId];
}
}
ТЗД завантажує завдання, співробітник сканує штрих-коди і вводить кількість. API приймає результати по одній позиції. Після завершення — звіт про розбіжності (qty_system vs qty_actual) доступний в адміністративній частині.
Приймання товару через ТЗД
При прийманні постачання співробітник сканує кожну одиницю. API-обробник /api/tsd/v1/receipt/scan зіставляє штрих-код із позицією постачання (через таблицю постачальників b_catalog_docs_element або кастомну таблицю закупівель) і збільшує лічильник прийнятих одиниць.
По завершенні приймання автоматично:
- Оновлюються залишки в
b_catalog_store_product - Створюється документ приходу через
\Bitrix\Catalog\Document\StoreAPI - При розбіжності із замовленням — створюється завдання менеджеру в CRM
Авторизація ТЗД
Кожен ТЗД отримує при налаштуванні персональний API-токен (bl_tsd_tokens). Токен жорстко прив'язаний до warehouse_id — пристрій не може бачити завдання іншого складу. Токени не мають строку дії, але можуть бути відкликані через інтерфейс адміністратора.
Популярні ТЗД і сумісність
| Пристрій | ОС | Протокол | Статус |
|---|---|---|---|
| Honeywell CK65 | Android 8+ | REST/JSON | Повна підтримка |
| Zebra TC52/TC57 | Android 8+ | REST/JSON | Повна підтримка |
| Urovo DT50 | Android | REST/JSON | Повна підтримка |
| Datalogic Memor 20 | Android | REST/JSON | Повна підтримка |
| Motorola MC9200 | Windows CE 7 | REST через HTTPPOST | Обмежена |
Для пристроїв Windows CE REST/JSON реалізується через нативні HTTP-бібліотеки; рекомендуємо обмежити функціональність лише комплектацією замовлень.
Терміни
| Етап | Термін |
|---|---|
| Проєктування API і схеми БД | 2 дні |
| API-контролери (комплектація, приймання, інвентаризація) | 5–6 днів |
| Адміністративний інтерфейс управління завданнями | 3 дні |
| Тестування з реальним ТЗД | 2–3 дні |
| Разом | 12–15 днів |







