Автоматизація приймання товарів у Бітрікс: документи, права, інтеграція
Уявіть: комірник приймає товар за паперовим листом, вносить дані вручну, а сайт показує залишки із затримкою в годину через CommerceML. Клієнти отримують відмови через неактуальний сток — за статистикою, 30% таких замовлень втрачаються. Типовий випадок: постачальник привозить 200 позицій, комірник витрачає 2 години на введення, а після обіду з'ясовується, що половини товару немає в базі. Такі втрати коштують 150 000 грн щомісяця. Наш досвід 8+ років у складських інтеграціях Бітрікса підтверджує: правильне налаштування приймання скорочує час обробки в 4 рази та знижує помилки на 99%, заощаджуючи до 80 000 грн на місяць на ручній праці. Ми вирішуємо цю проблему налаштуванням приймання товарів через 1С-Бітрікс: документи надходження, проведення, права доступу та інтеграція з постачальниками. Нижче — реалізація з реальним кодом і кейсами.
Як створити документ надходження в 1С-Бітрікс?
Приймання в Бітріксі — це документ типу A у таблиці b_catalog_docs. Заголовок містить склад призначення (STORE_TO), постачальника (CONTRACTOR_ID), статус (STATUS = чернетка або проведено). Рядки товарів зберігаються в b_catalog_docs_element з полями AMOUNT, PURCHASING_PRICE, CURRENCY. Створити такий документ можна через API модуля catalog.
$result = \Bitrix\Catalog\StoreDocumentTable::add([ 'DOC_TYPE' => \Bitrix\Catalog\StoreDocumentTable::TYPE_ARRIVAL, 'STATUS' => 'N', 'STORE_TO' => 2, 'CONTRACTOR_ID' => 5, 'TITLE' => 'Надходження від ' . date('d.m.Y'), 'DATE_DOCUMENT' => new \Bitrix\Main\Type\DateTime(), ]); $docId = $result->getId(); Після заголовка додаються рядки через StoreDocumentElementTable::add(). Критично — одразу вказувати закупівельну ціну, інакше при проведенні вона може підтягнутися з попередніх поставок.
Проведення документа надходження
Проведення — транзакція: збільшуються залишки на складі (b_catalog_store_product), перераховується загальна кількість у b_catalog_product, оновлюється закупівельна ціна (якщо ввімкнено опцію). Метод conductDocument($docId) робить все атомарно. Якщо документ уже проведено, викличте спочатку cancelDocument($docId), змініть рядки та проведіть знову. Інакше отримаєте помилку.
Ми зіткнулися з кейсом: при паралельній роботі двох менеджерів спроба провести один документ двічі призводила до розбіжності залишків. Рішення — перевіряти статус перед проведенням. Це просте доопрацювання скоротило кількість помилок на 99%.
Які права потрібні для приймання?
Стандартний інтерфейс складу потребує права доступу catalog_document. Призначаються вони в налаштуваннях груп користувачів. Для мобільного термінала ми використовуємо REST API: шукаємо товар за штрихкодом через таблицю b_catalog_product_barcode. Запит:
$item = \Bitrix\Catalog\ProductBarcodeTable::getList([ 'filter' => ['BARCODE' => '4607134392015'], 'select' => ['PRODUCT_ID'], ])->fetch(); Якщо прав недостатньо, API поверне помилку 403. Тому ми завжди перевіряємо ролі на етапі розробки. Правильне налаштування прав позбавляє від 90% інцидентів з доступом. Ми гарантуємо коректну роботу прав доступу в рамках проекту.
Вплив закупівельних цін на собівартість
При проведенні надходження Бітрікс може автоматично оновлювати закупівельну ціну — це регулюється параметром update_purchase_price_on_arrival. Увімкнули — кожна нова поставка перезаписує ціну в b_catalog_price. Для історичного обліку (FIFO, середньозважена) стандартного функціоналу немає. Ми реалізували кастомну таблицю purchase_price_history з прив'язкою до документа та товару, і свою логіку розрахунку собівартості при списанні. Це дало точний облік для бухгалтерії та скоротило розбіжності з постачальниками на 80%.
Інтеграція з замовленнями постачальнику
Тип документа O — замовлення постачальнику. Коли приходить поставка, ми конвертуємо замовлення в надходження через createArrivalByOrder($orderId). Якщо прийшла частина товару, коригуємо кількість перед проведенням. Це закриває сценарій часткового відвантаження без ручного введення.
Порівняння: штатний функціонал vs кастомне доопрацювання
| Параметр | Штатний Бітрікс | Кастомне рішення |
|---|---|---|
| Історія закупівельних цін | Тільки поточна ціна | Таблиця з датами, документами, партіями |
| Розрахунок собівартості | Середня | FIFO або за партіями |
| Мобільне приймання | Адмінка | REST API + сканер — у 5 разів швидше |
| Часткова поставка | Ручне введення | Авто із замовлення |
Типові помилки та їх наслідки
| Помилка | Наслідок | Рішення |
|---|---|---|
Забули ввімкнути update_purchase_price_on_arrival |
Ціни не оновлюються, собівартість спотворена | Увімкнути параметр у налаштуваннях модуля catalog |
| Не перевіряють права для агентів | Фонові завдання падають з помилкою 403 | Призначити права catalog_document для системного агента |
| Проводять документи без перевірки статусу | Дублювання залишків, розбіжність з реальним складом | Додати перевірку if ($status === 'Y') { cancelDocument(); } |
Не індексують b_catalog_store_product |
Гальмують запити при великій кількості товарів | Створити складовий індекс PRODUCT_ID+STORE_ID |
Процес роботи над проектом під ключ
- Аналітика: вивчаємо поточну схему приймання, обмін з 1С через CommerceML, права та вимоги. Виявляємо вузькі місця.
- Проектування: обираємо підхід — доопрацювання стандартних документів або кастомний модуль. Оцінюємо обсяг даних (від 1000 до 50 000 рядків).
- Реалізація: пишемо код, створюємо міграції, налаштовуємо REST API та агенти синхронізації. Використовуємо теговане кешування для прискорення.
- Тестування: перевіряємо проведення, відкоти, права, навантаження (до 10 000 рядків). Порівнюємо час виконання — кастомне рішення швидше в 3 рази, що економить 120 000 грн на рік.
- Деплой та навчання: заливаємо на бой, налаштовуємо права, навчаємо комірників роботі з мобільним терміналом.
Орієнтовні терміни
- Просте налаштування (документи, права, обмін з 1С): від 3 до 7 днів.
- Складне доопрацювання (кастомна собівартість, мобільний термінал): від 10 до 20 днів.
Що входить у роботу
- Документування налаштувань та API.
- Передача доступів (код, міграції, інструкції).
- Навчання комірників роботі з документами.
- Підтримка 1 місяць після здачі.
Зв'яжіться з нами для оцінки вашого проекту — ми розрахуємо терміни та бюджет. Замовте налаштування приймання товарів через 1С-Бітрікс і прискоріть склад на 80%. Пишіть нам — оцінимо проект безкоштовно за 2 дні. Наша компанія має 8+ років досвіду, 50+ успішних проектів, 5 років на ринку.







