Торговля и Склад · 11 мин
Как в 1С поставить запрет на списание МПЗ при их отсутствии
Как в 1С запретить списание МПЗ при их отсутствии: настройки контроля остатков в Бухгалтерии, Управлении торговлей и ERP, проверка результата и типичные ошибки.
Списание материально-производственных запасов «в минус» — одна из самых распространённых проблем учёта: документ проводится, хотя нужного товара на складе физически нет. В результате в отчётах появляются отрицательные остатки, искажается себестоимость, а при инвентаризации выясняются расхождения, которые приходится разбирать задним числом. Настройка запрета на списание МПЗ при их отсутствии решает эту проблему на уровне программы: система просто не даст провести документ, пока остаток не будет введён.
Механизм контроля зависит от конфигурации. В «1С:Бухгалтерии» контроль остатков встроен в типовые процедуры проведения, а в «Управлении торговлей» и «ERP» есть отдельные настройки контроля товаров на складах, которые можно гибко включать и отключать. Ниже разобраны оба подхода, а также способ программного запрета для самописных и доработанных конфигураций.
Почему возникает списание «в минус» и чем это опасно
Отрицательные остатки появляются, когда документ списания (требование-накладная, реализация, списание материалов в производство) проводится раньше документа оприходования, либо когда приход вообще не введён в программу. Типичная ситуация: материалы фактически поступили и были отпущены в производство, а накладную от поставщика бухгалтер получил и ввёл только через неделю.
Последствия не ограничиваются «красными» цифрами в оборотно-сальдовой ведомости. При отрицательном остатке программа не может корректно рассчитать себестоимость списания по FIFO или средней — себестоимость будет занижена или равна нулю, а при последующем оприходовании возникнет разница, которую придётся корректировать. Кроме того, минус по складу искажает данные для инвентаризации и управленческой отчётности.
Запрет списания при отсутствии остатка переводит проблему из разряда «найти и исправить потом» в разряд «нельзя ошибиться сразу». Пользователь, пытающийся провести документ, получает сообщение о нехватке конкретной номенклатуры на конкретном складе и вынужден разобраться с приходом до списания.
Контроль остатков в 1С:Бухгалтерии
В типовой «1С:Бухгалтерии 8» контроль остатков при списании МПЗ встроен в процедуры проведения документов «Требование-накладная», «Реализация (акты, накладные)», «Списание материалов» и других. По умолчанию при проведении программа проверяет остаток по счёту учёта (10, 41 и др.) с учётом склада и номенклатуры, и при нехватке выдаёт ошибку «Недостаточно товара» с указанием количества.
Если документы в вашей базе проводятся «в минус», значит контроль был отключён или обойдён. Проверьте следующие места:
- раздел «Администрирование → Проведение документов» — в некоторых релизах доступна настройка, разрешающая списание при отсутствии остатков;
- наличие внешних обработок и расширений, подменяющих процедуру проведения;
- привилегированный режим проведения в доработках — в этом режиме контроль может не срабатывать.
Отдельный нюанс — проведение документов задним числом. Если списание проводится датой раньше оприходования, контроль сработает корректно и не даст провести документ, даже если на текущую дату остаток есть. Это правильное поведение: сначала нужно восстановить последовательность документов или изменить дату списания.
Настройка запрета в 1С:Управление торговлей и ERP
В «Управлении торговлей 11» и «1С:ERP» контроль остатков настраивается централизованно. Откройте раздел «НСИ и администрирование → Настройка НСИ и разделов → Склад и доставка» (в ранних версиях — «Настройка складского учёта»). Здесь находятся ключевые переключатели:
- «Контролировать остатки товаров организаций» — запрещает списание товаров, не оприходованных на организацию;
- «Контролировать обеспечение» — при включённом ордерном складе и резервировании проверяет наличие свободного (не зарезервированного) остатка;
- контроль при заполнении документов — предупреждение о нехватке ещё на этапе ввода строк.
- 1Откройте «НСИ и администрирование → Настройка НСИ и разделов → Склад и доставка»
- 2Установите флажок «Контролировать остатки товаров организаций»
- 3При использовании резервов включите контроль обеспечения
- 4Запишите настройки и перезапустите сеанс при необходимости
- 5Проверьте запрет на тестовом документе списания
После включения настройки попробуйте провести реализацию или внутреннее потребление товара, которого нет на складе. Программа должна отказать в проведении с сообщением о нехватке по конкретной номенклатуре, складу и организации. Если документ провёлся — проверьте, не отключён ли контроль для конкретного склада (в карточке склада может стоять признак, разрешающий отрицательные остатки) и нет ли у пользователя роли, разрешающей превышение контроля.
Исключения и гибкие сценарии
В некоторых процессах осознанно допускают временный минус: например, при ордерной схеме, когда товар отгружен, а приходный ордер оформят позже. В УТ для этого предусмотрены настройки отдельных складов и статусы документов. Прежде чем отключать контроль для конкретного склада, оцените риск: отрицательные остатки по этому складу будут попадать в отчёты и себестоимость.
Программный запрет в собственных и доработанных конфигурациях
Если конфигурация самописная или сильно доработана, типового контроля может не быть. В этом случае запрет добавляется в модуль объекта документа списания, в процедуру ОбработкаПроведения. Логика простая: перед формированием движений запросить остатки по регистру и при нехватке вызвать Отказ = Истина с сообщением пользователю.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ОстаткиМПЗ.Остатки(, Склад = &Склад) КАК Остатки
|ГДЕ
| Остатки.Номенклатура В (&СписокНоменклатуры)";
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("СписокНоменклатуры",
Товары.ВыгрузитьКолонку("Номенклатура"));
Остатки = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Товары Цикл
Найдено = Остатки.Найти(Строка.Номенклатура, "Номенклатура");
Доступно = ?(Найдено = Неопределено, 0, Найдено.Остаток);
Если Доступно < Строка.Количество Тогда
Сообщить("Недостаточно: " + Строка.Номенклатура
+ ". Остаток: " + Доступно + ", требуется: " + Строка.Количество);
Отказ = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Нюансы реализации: проверку лучше выполнять с учётом блокировки данных (установить управляемую блокировку по регистру до чтения остатков), иначе два одновременных документа могут пройти контроль и списать один и тот же остаток. Также учитывайте собственные движения документа при перепроведении — остатки нужно запрашивать на момент времени документа.
Что делать с уже накопленными минусами
Включение запрета не исправляет историю: отрицательные остатки, возникшие раньше, останутся в регистрах и будут мешать закрытию месяца. Перед включением контроля имеет смысл провести ревизию остатков.
Порядок работы: сформируйте отчёт «Остатки товаров на складах» (в УТ/ERP) или оборотно-сальдовую ведомость по счетам 10 и 41 с детализацией по номенклатуре (в Бухгалтерии) и отберите позиции с отрицательным количеством. По каждой позиции выясните причину: не введённый приход, ошибка в количестве списания, неверный склад или организация в документе. Затем введите недостающие приходные документы правильными датами либо скорректируйте ошибочные списания.
После исправления перепроведите документы списания по проблемным позициям, чтобы система пересчитала себестоимость. Только после этого включайте жёсткий запрет — иначе пользователи сразу столкнутся с массовыми отказами в проведении и не смогут работать.
Проверка результата и частые ошибки
После настройки выполните контрольную проверку под учётной записью обычного пользователя, а не администратора: создайте документ списания с номенклатурой, которой заведомо нет на остатке, и попробуйте провести. Система должна отказать с понятным сообщением: какой товар, на каком складе, сколько требуется и сколько доступно.
Вторая проверка — положительный сценарий: оприходуйте тестовое количество и убедитесь, что списание в пределах остатка проходит без ошибок. Это подтвердит, что контроль работает избирательно, а не блокирует проведение вообще.
Как проверить результат
Отказ с сообщением о нехватке конкретной номенклатуры
Документ проводится, в отчёте появляется минус
Документ проводится, остаток уменьшается корректно
Ошибка даже при достаточном остатке — контроль настроен слишком широко
Отрицательных остатков нет
Минус появляется — контроль обходится доработкой или ролью
FAQ
Запрет включён, но документ всё равно проводится в минус. Почему?
Наиболее вероятные причины: у пользователя роль с правом превышения контроля, в карточке склада разрешены отрицательные остатки, либо в базе работает расширение или внешняя обработка, подменяющая проведение. Проверьте документ под обычным пользователем и посмотрите список подключённых расширений.
Можно ли сделать не запрет, а только предупреждение?
Да. В УТ и ERP часть настроек контроля работает в режиме предупреждения при заполнении документа — пользователь видит сообщение о нехватке, но может провести. Это компромисс для переходного периода, но минусы при таком режиме продолжат появляться, поэтому целевое состояние — жёсткий запрет.
Как быть, если товар отгружают до получения накладной от поставщика?
Оформляйте приход в программе по факту поступления на склад, а не по дате получения бумажных документов: используйте предварительный приходный документ или распоряжение на приёмку. Тогда остаток появится до отгрузки и контроль не помешает.
Влияет ли запрет на обмены данными и фоновые задания?
Да. Если документы загружаются обменом (например, из интернет-магазина или WMS), документ с нехваткой остатка не проведётся и зависнет в очереди ошибок. Настройте мониторинг ошибок обмена и порядок, при котором приходы загружаются раньше расходов.
Нужно ли включать контроль для всех складов сразу?
Не обязательно. Начните с основного товарного склада, где чаще всего возникают минусы, отладьте процесс ввода приходов, а затем распространите настройку на остальные склады. Это снижает риск остановки работы всего предприятия.
Контроль мешает провести документ задним числом, хотя остаток сейчас есть. Что делать?
Это штатное поведение: на дату документа остатка действительно не было. Приведите даты в соответствие с фактической последовательностью операций — сначала приход, затем списание — либо измените дату документа, если это допустимо по учётной политике.
Что важно запомнить
Запрет списания МПЗ при отсутствии остатка включается в настройках складского учёта (УТ/ERP) или уже встроен в проведение (Бухгалтерия). Перед включением исправьте накопленные минусы, после — проверьте работу под обычным пользователем в обоих сценариях: отказ при нехватке и успешное списание при наличии остатка.