Инвентаризация ломается на этапе сверки: система показывает 50 единиц, физически — 47. Кто-то корректирует остаток вручную через b_catalog_product, минуя документооборот. Через неделю расхождения накапливаются снова, история исчезает. Такая ситуация встречается на каждом втором складе. На одном из проектов (сеть из 12 складов) удалось сократить время инвентаризации на 60% — внедрили поэтапный обход с мобильным терминалом. Среднее количество расхождений уменьшилось с 8% до 1.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 система для каждой строки:
- Читает текущий учётный остаток из
b_catalog_store_product. - Сравнивает с фактическим (
AMOUNTиз строки документа). - Если фактическое меньше — создаёт расход (уменьшает
AMOUNT). - Если больше — создаёт приход (увеличивает
AMOUNT). - Обновляет суммарный
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 для всех товаров склада |
| Инвентаризация на нескольких складах одним документом | Создаём отдельный документ для каждого склада |
| Отсутствие истории расхождений | Внедряем кастомную таблицу снапшотов до проведения |
| Ручная корректировка таблиц | Блокируем прямой доступ через триггеры и права доступа |
Как ускорить инвентаризацию на больших складах?
Для складов с тысячами позиций стандартный интерфейс непригоден. Мы внедряем поэтапный обход: документ создаётся в статусе черновика, строки добавляются партиями через мобильный терминал или Excel-импорт. После завершения пересчёта документ проводится одной кнопкой. Это сокращает время инвентаризации в 3–4 раза.
Почему выбирают нас
Более 8 лет мы разрабатываем и сопровождаем проекты на 1С-Битрикс. За это время реализовали свыше 50 инвентаризационных систем для розничных сетей, оптовых складов и производств. Наш опыт подтверждают сертификаты и успешные кейсы.
Готовы настроить инвентаризацию в 1С-Битрикс под ваши задачи. Закажите консультацию — оценим проект за 1 день и предложим оптимальное решение. Получите стабильный учёт остатков без ручных правок.







