Ми розробляємо спеціалізовані звіти по залишках товарів для 1С-Бітрікс під ключ. У нашій практиці частий запит: «Покажи, що закінчується на складі». Задача вирішується по-різному залежно від структури обліку: один склад або декілька, синхронізація з 1С або автономний облік, торговельні пропозиції або прості товари. Стандартні засоби Бітрікс дають тільки базові фільтри в адміністративній частині. Для операційної роботи потрібні спеціалізовані звіти. Наш досвід — 8+ років, 50+ проектів — гарантує, що ви отримаєте працююче рішення без сюрпризів. Економія часу після впровадження — до 10 годин на тиждень, а точність даних — 100%.
Які проблеми вирішують звіти по залишках?
Менеджери витрачають години на ручний збір даних з різних розділів адмінки. Помилки в Excel, застарілі цифри, втрачені замовлення через відсутність товару — все це вирішується автоматичними звітами. Автоматизація виключає людський фактор: дані завжди актуальні на момент генерації, а пороги спрацьовування налаштовуються під категорії товарів.
Як зберігаються залишки в 1С-Бітрікс?
Залишки в Бітрікс зберігаються в декількох таблицях залежно від режиму обліку:
-
b_catalog_product— полеQUANTITY(сумарний залишок),QUANTITY_RESERVED(зарезервовано) -
b_catalog_store_product— залишки по складах (store_id,product_id,amount,quantity_reserved)
При роботі з торговельними пропозиціями (SKU): базовий товар (b_iblock_element з типом товар) не має залишку — залишки задаються на рівні SKU (b_catalog_product.product_id = sku_element_id).
Які SQL-запити потрібні для звіту по залишках?
Звіт «товари з критичним залишком»
SELECT ie.id, ie.name, prop_art.value AS article, sect.name AS section, cp.quantity AS stock, cp.quantity_reserved AS reserved, cp.quantity - cp.quantity_reserved AS available FROM b_catalog_product cp JOIN b_iblock_element ie ON ie.id = cp.id LEFT JOIN b_iblock_element_property prop_art ON prop_art.iblock_element_id = ie.id AND prop_art.iblock_property_id = :article_prop_id LEFT JOIN b_iblock_section sect ON sect.id = ie.iblock_section_id WHERE ie.iblock_id = :iblock_id AND ie.active = 'Y' AND (cp.quantity - cp.quantity_reserved) <= :min_stock_threshold ORDER BY (cp.quantity - cp.quantity_reserved) ASC; Залишки по складах з деталізацією (для багатоскладського обліку)
SELECT ie.name AS product_name, prop_art.value AS article, cs.title AS store_name, cs.address AS store_address, csp.amount AS store_amount, csp.quantity_reserved AS store_reserved FROM b_catalog_store_product csp JOIN b_catalog_store cs ON cs.id = csp.store_id AND cs.active = 'Y' JOIN b_iblock_element ie ON ie.id = csp.product_id LEFT JOIN b_iblock_element_property prop_art ON prop_art.iblock_element_id = ie.id AND prop_art.iblock_property_id = :article_prop_id WHERE ie.iblock_id = :iblock_id AND csp.amount > 0 ORDER BY ie.name, cs.sort; Звіт по SKU (торговельним пропозиціям)
SKU — це модифікації товару (розмір, колір). Для звіту по залишках SKU використовуйте цей запит:
SELECT parent.name AS product_name, sku.name AS sku_name, prop_color.value AS color, prop_size.value AS size, cp.quantity AS stock FROM b_iblock_element sku JOIN b_iblock_element parent ON parent.id = sku.wf_parent_id -- для старого API -- Або через b_catalog_product_offer для D7: JOIN b_catalog_product_offer cpo ON cpo.id = sku.id JOIN b_iblock_element parent ON parent.id = cpo.owner_id JOIN b_catalog_product cp ON cp.id = sku.id LEFT JOIN b_iblock_element_property prop_color ON prop_color.iblock_element_id = sku.id AND prop_color.iblock_property_id = :color_prop_id LEFT JOIN b_iblock_element_property prop_size ON prop_size.iblock_element_id = sku.id AND prop_size.iblock_property_id = :size_prop_id WHERE sku.iblock_id = :sku_iblock_id AND sku.active = 'Y' ORDER BY parent.name, sku.name; Кейс: автоматизація розсилки звітів для магазину одягу
Магазин одягу: 3 000 SKU, 2 склади (Київ та Львів), синхронізація з 1С раз на годину. Баєр щоранку перевіряв Excel із залишками — файл оновлювався вручну раз на день. Ми реалізували автоматичний звіт «критичні залишки» з розсилкою електронною поштою о 8:00 ранку.
Реалізація:
- SQL-запит по таблицях
b_catalog_store_product+b_iblock_element_property(колір, розмір) - Генерація XLSX через PhpSpreadsheet з умовним форматуванням: червоний — залишок 0–1, жовтий — 2–5
- Агент Бітрікс, що запускається раз на добу о 7:45, генерує файл та зберігає в
/upload/reports/ - Відправка листа через
\Bitrix\Main\Mail\Event::send()з вкладенням баєру та директору
function GenerateLowStockReport(): string { $generator = new StockReportGenerator(); $file = $generator->generateLowStock(threshold: 5); $savedPath = '/upload/reports/low_stock_' . date('Y-m-d') . '.xlsx'; copy($file, $_SERVER['DOCUMENT_ROOT'] . $savedPath); \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'LOW_STOCK_REPORT', 'LID' => 's1', 'C_FIELDS' => [ 'REPORT_DATE' => date('d.m.Y'), 'FILE_PATH' => $savedPath, ], ]); unlink($file); return __FUNCTION__ . '();'; } Результат: звіт скоротив час підготовки даних баєром з 30 хвилин до 0 — файл чекає в пошті. У 10 разів швидше ручного формування — це реальна економія.
Чому варто обрати автоматизацію?
Автоматичний звіт виключає людський фактор: не потрібно пам'ятати про завантаження, не потрібно надсилати вручну, дані завжди актуальні на момент генерації. Плюс — можливість налаштувати різні пороги спрацьовування для різних категорій товарів. Детальніше про структуру даних.
Типові помилки при розробці звітів по залишках
Неправильні JOIN в SQL: наприклад, забувають врахувати резерви (QUANTITY_RESERVED) або не враховують багатоскладський облік. Ігнорування торговельних пропозицій: звіт показує залишки тільки базових товарів, а SKU залишаються без уваги. Відсутність перевірки актуальності даних: якщо обмін з 1С затримався, звіт покаже невірні цифри. Ми допомагаємо уникнути цих помилок на етапі аналізу — отримайте консультацію, щоб ваш звіт працював без збоїв.
Що входить в розробку звіту під ключ
- Аналіз поточної структури обліку (склади, SKU, 1С-обмін)
- Написання та оптимізація SQL-запитів
- Розробка модуля генерації XLSX з умовним форматуванням
- Налаштування агента для автозапуску за розкладом
- Створення простого UI для ручного запуску та фільтрації
- Інструкція для адміністратора (де файли, як додати отримувачів)
- Тестування на ваших даних
Замовте розробку — ми покажемо, як ваш бізнес заощадить час та гроші.
Порівняння способів отримання даних про залишки
| Спосіб | Швидкість | Гнучкість | Автоматизація | Складність |
|---|---|---|---|---|
| Стандартний фільтр в адмінці | Миттєво | Низька | Немає | Низька |
| REST API | Швидко | Середня | Часткова | Середня |
| Прямі SQL-запити | Швидко | Висока | Повна | Потребує експерта |
Терміни та вартість
| Конфігурація | Термін |
|---|---|
| Звіт по критичних залишках (SQL + XLSX) | 1–2 дні |
| Звіт по складах з деталізацією по SKU | 2–4 дні |
| Автогенерація + розсилка + UI-фільтри | 4–7 днів |
Вартість розраховується індивідуально — зв'яжіться з нами для оцінки вашого проекту. Ми гарантуємо якість та супровід після впровадження.







