Инвентаризация в ERPNext: как провести Stock Reconciliation и разобрать расхождения с остатками
Инвентаризация в ERPNext проводится документом Stock Reconciliation: вы скачиваете шаблон, вносите фактические остатки, загружаете файл и проводите документ. Разница уходит на счёт Stock Adjustment. Ниже: шаги, начальные остатки, резервирование, поиск расхождений и то, что ломает пересчёт.
Как провести инвентаризацию в ERPNext: Stock Reconciliation и CSV-шаблон
Инвентаризацию в ERPNext делает один документ: Stock Reconciliation. Он не описывает движение вроде прихода или перемещения, а задаёт фактический остаток на складе: вы говорите системе, сколько товара на самом деле, и она сама считает разницу с учётным остатком и проводит корректировку. По документации, разница отражается на счёте Stock Adjustment. Если вы вводите склад в работу или хотите закрыть расхождения перед годовой отчётностью, начинать нужно именно с него. Общую картину внедрения учёта я описывал на странице про ERPNext под ключ, а здесь разберу только инвентаризацию.
Порядок работы такой. В списке Stock Reconciliation создаётся новый документ. В поле Purpose выбирается режим, для инвентаризации это Stock Reconciliation. Дальше есть три способа наполнить таблицу позиций: загрузить CSV-шаблон (скачать пустой, заполнить, загрузить обратно), подтянуть остатки на нужную дату кнопкой выбора позиций или набрать позиции сканером штрихкодов, где каждое считывание добавляет единицу. Кладовщики обычно начинают с шаблона: он содержит позицию, склад и колонки под количество и стоимость, и его можно заполнять прямо на складе с планшета или распечатки.
Для позиций с партиями и серийными номерами с версии 15 используется Serial and Batch Bundle: в строке инвентаризации указывается не просто количество, а конкретные партии или серийные номера, которые реально лежат на полке. Это удобно, когда инвентаризация идёт частями: сегодня стеллаж с кабелем, завтра автоматы. Детали интерфейса версий 15 и 16 различаются, и я проверяю их на тестовом сайте перед обучением кладовщиков.
Практика проведения. Перед подсчётом фиксируется дата и время: на склад в этот момент не должно проходить документов, иначе остаток «уедет» между подсчётом и проведением. После загрузки файла я смотрю расхождения до проведения: сначала сортирую по абсолютной величине, потом по стоимости. Крупные расхождения проверяю пересчётом ещё раз, а не проводом: часто это ошибка ввода или забытая коробка. Только после этого документ проводится, и в журнале движений появляются корректировки.
- Зафиксировать дату подсчёта и остановить движение на складе
- Скачать CSV-шаблон и заполнить фактические количества
- Загрузить файл и проверить расхождения до проведения
- Провести документ и сохранить копию файла подсчёта
Начальные остатки: тот же документ при запуске системы
При запуске склада в ERPNext первые остатки вносятся тем же Stock Reconciliation, только в режиме Opening Stock. Документация отдельно описывает этот сценарий: система регистрирует начальные остатки на выбранную дату и использует для разницы временный счёт Temporary Opening, а не счёт корректировок. Для бухгалтера это важно: начальный остаток не должен выглядеть как «излишек, выявленный при инвентаризации», иначе отчётность запутается.
Что загружать. Не историю движений за годы, а закрывающий остаток на дату отсечки: количество, склад и стоимость единицы. При миграции из другой системы переносить исторические транзакции не рекомендуется, потому что они тянут за собой чистку и сверку, а пользы для работы дают мало. Дату отсечки выбирают на границе периода, чтобы учёт в 1С и в ERPNext совпадал, а остатки сверяют с оборотно-сальдовой ведомостью бухгалтера.
Что проверить перед загрузкой. Все позиции заведены в справочнике, у них корректные единицы измерения и метод оценки, склады существуют и привязаны к счетам. Если у позиции включены партии, в шаблоне нужны номера партий и сроки. Стоимость единицы согласована с бухгалтером: от неё зависит себестоимость всех следующих расходов. После загрузки сверьте итоговую стоимость склада с данными бухгалтера и только потом запускайте рабочие документы.
Типичная ошибка запуска: остатки загрузили, а потом задним числом провели приходы, которые «забыли». Система пересчитывает оценку, но такие проводки создают нагрузку и риск ошибок, особенно если уже есть расходы. Поэтому до начала работы я прошу выписать все приходы после даты отсечки и провести их до открытия склада пользователям.
Резервирование под заказы: Stock Reservation и что оно меняет в остатках
Резервирование отвечает на другой вопрос, чем инвентаризация: не «сколько есть», а «сколько из этого уже обещано». Функция включается в Stock Settings флажком Enable Stock Reservation. Дальше резерв оформляют из заказа покупателя кнопкой резервирования, где задаются склад и количества, либо из листа подбора (Pick List), где создаются записи резерва. Есть и автоматический режим: при проведении поступления система может сама резервировать товар под заказ, если включена соответствующая опция в настройках. В списке полей настроек есть и разрешение частичного резервирования (Allow Partial Reservation).
Что резерв делает с остатками. Записи Stock Reservation Entry копятся в отдельном поле Reserved Stock складского остатка (Bin): физический остаток они не меняют, и формулу Projected Qty в коде v15 тоже не трогают, зато не дают отгрузить зарезервированное количество по чужому заказу. Это важно для инвентаризации: пересчёт на складе покажет все мешки и катушки, включая зарезервированные, и корректировка Stock Reconciliation не отменяет резервы. Если после инвентаризации остаток стал меньше резерва, система не сможет выполнить обещание, и заказ придётся пересогласовывать с клиентом.
Отмена резерва делается либо из заказа и листа подбора, либо удалением записи резерва напрямую. Просроченные резервы не снимаются сами: нужен регламент, который раз в неделю просматривает старые заказы и освобождает товар. Для компании, продающей электротовары, это живая проблема: менеджеры резервируют катушку кабеля под «почти подписанную» сделку, и склад «замораживается» невидимо. Я рекомендую дату окончания резерва в заказе и еженедельный список просроченных.
Нестандартные схемы, вроде резервирования под коммерческие предложения через виртуальный склад и ночной скрипт снятия, описаны в сообществе, но это доработка, и в базовое внедрение она не входит. Если вам нужна именно такая логика, закладывайте её в техническое задание, а не рассчитывайте на готовую кнопку.
Расхождения после инвентаризации: Stock Ledger Variance и Repost Item Valuation
Если после инвентаризации остатки сошлись, а стоимость склада нет, вопрос уже не к подсчёту, а к регистру движений. ERPNext хранит движения в книге Stock Ledger, а при проведении документов, особенно задним числом, создаёт задание пересчёта Repost Item Valuation, которое переоценивает последующие движения. Задание создаётся автоматически, а ручной пересчёт можно запустить по компании, складу и дате.
Для поиска несоответствий есть отчёт Stock Ledger Variance. По документации он находит записи, где «Running Available Stock» и «Stock Balance» не совпадают, и показывает три типа проблем: расхождение количества, ошибку остатка по стоимости и неверную ставку оценки. Исправляется это пакетно: в отчёте выбираются строки, нажимается кнопка Create Reposting Entries, система создаёт задания пересчёта, и после их выполнения отчёт запускается заново. Документация советует делать это вне рабочих часов, так как пересчёт может быть долгим, и проверять остатки после его окончания.
Когда запускать отчёт. После устранения проблем с пересчётом, при неожиданных ошибках «отрицательный остаток», после импорта документов задним числом и при ревизиях склада. Я добавляю его в регламент ежемесячного закрытия: ежемесячный запуск занимает несколько минут и ловит тихие ошибки, пока они небольшие.
Пересчёт можно ограничить по времени. В Stock Reposting Settings есть опция «Limit timeslot for Stock Reposting»: она задаёт часы, когда разрешён пересчёт, и помогает избежать взаимных блокировок. Там же есть флажок Use Item based reposting (пересчёт по позициям) и выбор роли, которой приходят уведомления об ошибках пересчёта (Notify Reposting Error to Role): без неё сбой пересчёта может неделями оставаться незамеченным. Пересчёт долгих периодов упирается в таймаут, поэтому документация рекомендует ограничивать задние даты примерно месяцем.
Что ломает пересчёт: отрицательные остатки и документы задним числом
Три причины сбоев пересчёта повторяются из проекта в проект. Первая: включённый Allow Negative Stock. Отрицательные остатки мешают корректной работе методов оценки FIFO и скользящей средней, потому что система не может честно оценить расход того, чего нет. Для партий в v15 есть отдельный флажок Allow Negative Stock for Batch, и его я тоже держу выключенным. Решение простое: запретить отрицательные остатки и оформлять приход до расхода.
Вторая причина: документы задним числом. ERPNext позволяет провести движение с прошлой датой, но пересчитывает при этом все последующие операции по позиции. Рекомендации документации и нашей базы знаний совпадают: не проводить документы старше месяца, а чтобы кто-то случайно этого не сделал, использовать настройку заморозки: дату Stock Frozen Upto и параметр Freeze Stocks Older Than (Days) с ролью Role Allowed to Edit Frozen Stock, а в v15 ещё и Role Allowed to Create/Edit Back-dated Transactions, которая ограничивает круг людей, вообще способных провести документ задним числом. Закрыв прошлый период, вы защищаете его от случайных правок.
Третья причина: ручная «синхронизация» остатков через Journal Entry. Бухгалтер видит расхождение стоимости и правит его журнальной проводкой, а затем проводятся документы задним числом, и система выдаёт ошибку оценки. Правило, которое я прошу соблюдать: остатки на складе правятся только документом Stock Reconciliation, а не журналом. Стоимость склада в учёте и стоимость в складском регистре должны меняться одним механизмом, иначе их невозможно сверить. | Симптом | Причина | Действие | |---|---|---| | Ошибка оценки при проводке задним числом | ручная корректировка через Journal Entry | не править остатки журналом, использовать Stock Reconciliation | | Тормозит или блокировка при пересчёте | параллельные проводки и пересчёт в рабочее время | включить ограничение времени пересчёта | | Отрицательный остаток | включён Allow Negative Stock | запретить и оформить приход | | Остаток не совпадает со стоимостью | расхождение в регистре | отчёт Stock Ledger Variance и Create Reposting Entries |
Отдельный случай: серийные номера, созданные до версии 15. В документации Stock Reposting Settings описано, что при пересчёте такие номера могут давать неверную ставку, и для этого предусмотрена опция, заставляющая брать ставку из реальных приходных операций. Если вы обновили систему со старой версии и видите странную себестоимость у серийных позиций, проверьте первым флажок Do not fetch incoming rate from Serial No.
Разбор: «Ампер-Опт» проводит годовую инвентаризацию склада электротоваров
Условный пример: оптовый склад электротоваров «Ампер-Опт», четырнадцать рабочих мест. Все цифры придуманы для иллюстрации. Кабель в катушках, автоматические выключатели, розетки. Раньше годовая инвентаризация шла на бумаге, итоги вносили в 1С вручную, а в операционной системе остатки просто «поправляли».
Как провели в ERPNext. За день до подсчёта заморозили движения на складе: отгрузки шли только из зоны отгрузки, приходы откладывались. Кладовщики получили распечатки шаблона Stock Reconciliation по зонам. После подсчёта данные загрузили в документ. Руководитель склада посмотрел расхождения до проведения и отправил на перепроверку позиции с крупной разницей. Затем документ провели, а на следующий день запустили отчёт Stock Ledger Variance и убедились, что регистр движений не имеет несоответствий. | Позиция | В системе | По факту | Расхождение | |---|---|---|---| | Кабель, м | 500 | 480 | −20 | | Автомат, шт | 40 | 40 | 0 | | Розетки, шт | 120 | 126 | +6 |
Как читать эти расхождения. Минус 20 метров кабеля вероятнее всего означает остаток катушки, который списали не тем количеством: типичный случай при отгрузке «по метражу» без доводки. Плюс шесть розеток скорее всего связан с недооформленным приходом, и это стоит искать в документах поставки. Каждое расхождение Stock Reconciliation превратит в проводку на счёте Stock Adjustment, и поэтому бухгалтеру нужно показать список до проведения: он решает, как отражать излишки и недостачи.
Что компания получила и чего не получила. Получила: единый документ вместо бумажных ведомостей и ручных исправлений, прозрачный список расхождений и повторяемую процедуру. Не получила: автоматического решения, кто виноват в недостаче, и автоматической выгрузки результатов в 1С, она настраивается отдельно. Сам подход к складскому учёту в других системах мы сравнивали в материале про склад в Odoo, а ТСД и 1С разобраны в статье про терминалы сбора данных.
Ограничения: что проверить на своей версии до первой инвентаризации
Раздел про инвентаризацию в нашей базе знаний короткий, и я сознательно не описываю интерфейс версий 15 и 16 «по памяти». Названия кнопок, колонок шаблона и режимов подбора партий меняются от релиза к релизу. Поэтому перед обучением кладовщиков проведите на тестовом сайте полный цикл: скачайте шаблон, заполните три позиции, загрузите, проведите, откройте книгу движений и отчёт расхождений. Это двадцать минут, которые экономят неделю путаницы.
Второе ограничение: ERPNext не заменяет регламентные документы российской инвентаризации. Инвентаризационная опись по унифицированной форме, акт расхождений, подписи комиссии — это бухгалтерские документы, и они формируются в 1С или по шаблонам, которые настраиваются отдельно. Stock Reconciliation решает задачу учёта остатков, а не оформления комиссии. Если вам нужна печатная форма, закладывайте её в проект.
Третье: производительность. Инвентаризация большого склада создаёт пакет корректировок и запускает пересчёт стоимости. На маленьком складе это секунды, на большом это может занять часы, и пересчёт лучше запускать вне рабочего времени. Параметры времени пересчёта и ограничения по сроку задних дат описаны выше, их нужно настроить до начала подсчёта.
Четвёртое, организационное. Любая инвентаризация упирается в дисциплину: если во время подсчёта кладовщики продолжают отгружать, расхождения неизбежны. Система не заменяет остановку движения, она фиксирует результат. Для сравнения с другими системами и подходами к выбору учёта можно открыть обзор систем учёта на Linux, а для микробизнеса есть и более простой вариант, описанный в материале про Dolibarr.
Частые вопросы
Как загрузить результаты инвентаризации в ERPNext?
Откройте Stock Reconciliation, выберите режим Stock Reconciliation, скачайте CSV-шаблон, заполните фактические количества и загрузите файл обратно. Для партионных и серийных позиций в версии 15 работает Serial and Batch Bundle. Перед проведением просмотрите расхождения, а крупные проверьте пересчётом.
Чем Stock Reconciliation отличается от Stock Entry?
Stock Reconciliation задаёт фактический остаток и корректирует учёт до этого значения, разницу по документации относит на счёт Stock Adjustment. Stock Entry описывает движение: приход, расход, перемещение. Для начальных остатков и инвентаризаций предназначен именно Reconciliation.
Как зарезервировать товар под заказ в ERPNext?
Включите Enable Stock Reservation в Stock Settings, затем резервируйте из заказа покупателя или листа подбора. Есть опция автоматического резерва при поступлении и разрешение частичного резервирования. Резерв не меняет физический остаток, но запрещает отгрузить зарезервированное по другому заказу, а просроченные резервы снимают регламентом.
Можно ли проводить инвентаризацию задним числом?
Технически да, но документация и практика не рекомендуют проводить документы старше месяца: растёт риск сбоев и таймаутов пересчёта. Запретить старые даты можно настройкой Stock Frozen Upto или заморозкой записей старше заданного числа дней с ролью-исключением.
Почему после инвентаризации не сходится стоимость склада?
Частые причины: отрицательные остатки и ручная правка стоимости журнальной проводкой перед проводками задним числом. Расхождения ищет отчёт Stock Ledger Variance, исправление пакетное: выбрать строки и нажать Create Reposting Entries. Выполняйте это вне рабочего времени.
Нужно ли переносить историю движений при запуске склада?
Нет: при миграции исторические транзакции переносить не рекомендуется, загружается только закрывающий остаток как начальный на дату отсечки через Stock Reconciliation в режиме Opening Stock. Дату выбирают на границе периода и сверяют стоимость с данными бухгалтера.
Источники
- ERPNext Docs — Stock Reconciliation — Режимы Opening Stock и Stock Reconciliation, счета Temporary Opening и Stock Adjustment, CSV-шаблон, сканирование штрихкодов, Serial and Batch Bundle с версии 15; проверено 01.10.2026: https://docs.frappe.io/erpnext/stock-reconciliation
- ERPNext Docs — Stock Reservation — Enable Stock Reservation в Stock Settings, резерв из заказа и листа подбора, автоматический резерв при поступлении, отмена записей резерва; проверено 01.10.2026: https://docs.frappe.io/erpnext/stock-reservation
- ERPNext Docs — Stock Ledger Variance Report — Типы расхождений, кнопка Create Reposting Entries, рекомендация делать вне пика; проверено 01.10.2026: https://docs.frappe.io/erpnext/stock-ledger-variance-report
- ERPNext Docs — Stock Reposting Settings — Limit timeslot for Stock Reposting, обработка по позициям, параллельная обработка, лимит около месяца для задних дат, серийные номера до версии 15; проверено 01.10.2026: https://docs.frappe.io/erpnext/stock-reposting-settings
- frappe/erpnext (ветка version-15) — Stock Settings — Поля Enable Stock Reservation, Allow Partial Reservation, Allow Negative Stock, Stock Frozen Upto; проверено 01.10.2026: https://github.com/frappe/erpnext/blob/version-15/erpnext/stock/doctype/stock_settings/stock_settings.json
