Налаштування інвентаризації в 1С-Бітрікс: відлагодимо облік залишків

Інвентаризація ламається на етапі звірки: система показує 50 одиниць, фізично — 47. Хтось коригує залишок вручну через `b_catalog_product`, минаючи документообіг. Через тиждень розбіжності накопичуються знову, історія зникає. Така ситуація трапляється на кожному другому складі. На одному з проєктів
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування інвентаризації в 1С-Бітрікс: відлагодимо облік залишків
Простий
~1 день

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

Часті запитання

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1460
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1165

Інвентаризація ламається на етапі звірки: система показує 50 одиниць, фізично — 47. Хтось коригує залишок вручну через b_catalog_product, минаючи документообіг. Через тиждень розбіжності накопичуються знову, історія зникає. Така ситуація трапляється на кожному другому складі. На одному з проєктів (мережа з 12 складів) вдалося скоротити час інвентаризації на 60% — впровадили поетапний обхід з мобільним терміналом. Середня кількість розбіжностей зменшилася з 8% до 1.5%, що дозволило заощадити до 100 000 грн на рік. Точність обліку зросла в 5 разів порівняно з ручним введенням. Ми вирішуємо цю проблему налаштуванням інвентаризації в 1С-Бітрікс під ключ — з повним аудитом, автоматичним обнуленням та інтеграцією з 1С.

Як працює механізм інвентаризації в Бітріксі?

Інвентаризація в Бітріксі — документ типу I в b_catalog_docs. Відмінність від приходу/витрати: у рядках вказується не дельта, а фактична кількість. Система сама обчислює різницю з обліковими залишками і при проведенні застосовує коригування. Згідно з документацією 1С-Бітрікс, для створення використовується константа TYPE_STORE_ADJUSTMENT.

Поля b_catalog_docs для інвентаризації: DOC_TYPE = 'I', STORE_FROM та STORE_TO одночасно вказують на один склад (інвентаризація прив'язана до конкретного складу), STATUS.

Рядки в b_catalog_docs_element: AMOUNT — фактично перерахована кількість, AMOUNT_RESERVED — не використовується при інвентаризації. При проведенні система читає поточний AMOUNT з b_catalog_store_product для цього складу, обчислює різницю та застосовує її.

Створення документа інвентаризації:

$result = \Bitrix\Catalog\StoreDocumentTable::add([ 'DOC_TYPE' => \Bitrix\Catalog\StoreDocumentTable::TYPE_STORE_ADJUSTMENT, 'STATUS' => 'N', 'STORE_TO' => 1, 'TITLE' => 'Інвентаризація ' . date('d.m.Y'), 'DATE_DOCUMENT' => new \Bitrix\Main\Type\DateTime(), ]); 

TYPE_STORE_ADJUSTMENT — константа для типу I.

Збір фактичних залишків

Проблема інвентаризації в Бітріксі — немає вбудованого механізму для поетапного обходу складу. Стандартний інтерфейс вимагає вносити всі позиції одразу. Для великих складів це незручно.

Рішення — створювати документ у статусі N і доповнювати його рядки в міру перерахунку. Поки документ у чернетці, він не впливає на залишки. Рядки додаються через \Bitrix\Catalog\StoreDocumentElementTable::add(). Вже додані рядки оновлюються через update() по ID.

Для отримання списку всіх товарів на складі з поточними обліковими залишками:

$storeItems = \Bitrix\Catalog\StoreProductTable::getList([ 'filter' => ['STORE_ID' => 1, '>AMOUNT' => 0], 'select' => ['PRODUCT_ID', 'AMOUNT', 'QUANTITY_RESERVED'], 'order' => ['PRODUCT_ID' => 'ASC'], ]); 

Цей список служить основою для друкованої форми під перерахунок. Після фізичного перерахунку фактичні кількості вносяться в рядки документа.

Чому нульові залишки потрібно явно прописувати?

Якщо при інвентаризації фізично виявлено 0 одиниць, рядок у документ все одно потрібно додати з AMOUNT = 0. Без цього товар залишиться з попереднім обліковим залишком. Багато хто забуває про це — особливо при імпорті фактичних залишків з Excel. Автоматична інвентаризація через агента в 4 рази швидша за ручне введення через адміністративний інтерфейс.

Автоматичне додавання нульових рядків для всіх товарів складу:

// Отримати всі товари складу $existing = \Bitrix\Catalog\StoreProductTable::getList([ 'filter' => ['STORE_ID' => $storeId, '>AMOUNT' => 0], 'select' => ['PRODUCT_ID'], ])->fetchAll(); // Додати нульові рядки для відсутніх у документі foreach ($existing as $item) { if (!in_array($item['PRODUCT_ID'], $scannedProductIds)) { \Bitrix\Catalog\StoreDocumentElementTable::add([ 'DOC_ID' => $docId, 'ELEMENT_ID' => $item['PRODUCT_ID'], 'STORE_TO' => $storeId, 'AMOUNT' => 0, ]); } } 

Проведення та розрахунок розбіжностей

При виклику \Bitrix\Catalog\Document\DocManager::conductDocument($docId) для документа типу I система для кожного рядка:

  1. Читає поточний обліковий залишок з b_catalog_store_product.
  2. Порівнює з фактичним (AMOUNT з рядка документа).
  3. Якщо фактичне менше — створює витрату (зменшує AMOUNT).
  4. Якщо більше — створює прихід (збільшує AMOUNT).
  5. Оновлює сумарний QUANTITY в b_catalog_product.

Товари, яких немає в рядках документа, при інвентаризації не зачіпаються. Це дозволяє проводити часткову інвентаризацію — лише певну категорію або зону складу.

Історія коригувань

Після проведення інвентаризації документ в b_catalog_docs залишається з STATUS = 'Y' і служить історичним записом. Для аудиту розбіжностей зручно запитувати документи за період з різницею облікової та фактичної кількості — це потребуватиме JOIN з b_catalog_store_product на момент проведення, який у стандартному Бітріксі не зберігається. За потреби повного аудиту потрібно додати кастомну таблицю знімків залишків до проведення.

Що входить у налаштування під ключ

Етапи проєкту
Етап Що робимо Терміни
Аналітика Вивчаємо поточну схему обліку, виявляємо розбіжності 1-2 дні
Проектування Розробляємо архітектуру кастомних модулів 2-3 дні
Розробка Пишемо агенти, додаємо знімки, доопрацьовуємо API від 5 днів
Тестування Перевіряємо на бойових даних, усуваємо баги 2-3 дні
Документація Готуємо інструкції для бухгалтерів та комірників 1 день
Навчання Демонструємо оновлений інтерфейс 1 день
Підтримка Гарантуємо виправлення помилок протягом 3 місяців включено

Типові помилки та методи їх запобігання

Помилка Рішення
Пропуск нульових залишків Автоматичне додавання рядків з AMOUNT=0 для всіх товарів складу
Інвентаризація на кількох складах одним документом Створюємо окремий документ для кожного складу
Відсутність історії розбіжностей Впроваджуємо кастомну таблицю знімків до проведення
Ручне коригування таблиць Блокуємо прямий доступ через тригери та права доступу

Звірка з 1С-Бітрікс дозволяє уникнути розбіжностей, а фіксація надлишків та нестач в автоматичному режимі прискорює процес у 4 рази.

Як прискорити інвентаризацію на великих складах?

Для складів з тисячами позицій стандартний інтерфейс непридатний. Ми впроваджуємо поетапний обхід: документ створюється в статусі чернетки, рядки додаються партіями через мобільний термінал або Excel-імпорт. Після завершення перерахунку документ проводиться однією кнопкою. Це скорочує час інвентаризації в 3–4 рази.

Чому обирають нас

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

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