В процессе работы в программных продуктах 1С (будь то УПП, ERP, Комплексная автоматизация или 1С:Бухгалтерия) пользователи часто сталкиваются с ситуацией, когда по данным бухгалтерского или оперативного учета на складе числятся отрицательные остатки («краснота»). При заполнении документа Инвентаризация товаров на складе бухгалтеры удивляются, почему эти минусы не попадают в табличную часть автоматическим заполнением. В этой статье мы подробно разберем, почему программа ведет себя именно так, рассмотрим методологические тупики учета и выясним, как правильно исправить ситуацию штатными и техническими средствами.
Начнем с технической стороны вопроса. Если мы обратимся к конфигуратору и проанализируем запрос, который выполняется при нажатии кнопки «Заполнить по остаткам на складе», мы увидим жесткое ограничение. Система выбирает данные из регистров накопления (таких как ТоварыНаСкладах или ТоварыОрганизаций) либо из регистров бухгалтерии по условию, где количество строго больше нуля.
Разработчики фирмы 1С заложили эту логику намеренно. С точки зрения архитектуры системы отрицательный остаток на складе — это нелегитимное состояние, являющееся следствием ошибки ведения учета. Инвентаризация предназначена для отражения фактического наличия материальных ценностей. Поскольку физически отрицательного количества товара существовать не может, система исключает такие записи из автоматического заполнения.
Рассмотрим ситуацию с точки зрения законодательства и методологии бухгалтерского учета. Согласно действующему ФСБУ 5/2019 «Запасы» (ранее действовавшему ПБУ 5/01), запасы организации — это активы, которые физически существуют и контролируются предприятием для получения экономической выгоды в будущем. Отрицательных запасов в природе и в балансе быть не может.
Давайте проанализируем форму ИНВ-3 (Инвентаризационная опись). Она применяется для отражения данных фактического наличия ТМЦ. Члены инвентаризационной комиссии физически пересчитывают, взвешивают или измеряют товар. Они могут зафиксировать либо положительное количество товара (например, 10 штук), либо его полное отсутствие (0 штук). Физически записать в опись «-5 штук» невозможно — это абсурд.
Если бы система позволила вывести отрицательный учетный остаток в документ инвентаризации, мы бы столкнулись со следующей математической проблемой при расчете отклонений:
Отклонение = Фактическое количество - Учетное количество.10 - (-5) = 15 штук.Оприходование товаров на 15 штук. Однако физически у нас на складе находится только 10 штук! Оприходовав лишние 5 штук, мы искусственно завысим внереализационные доходы предприятия, что приведет к искажению себестоимости и завышению налога на прибыль.Часто главные бухгалтеры требуют отключить контроль отрицательных остатков, чтобы менеджеры могли оперативно выписывать документы («продавать в минус»). Рассмотрим, к каким критическим последствиям это приводит в базах данных:
Для корректного проведения инвентаризации необходимо сначала полностью избавиться от отрицательных остатков в системе. Разберем по шагам, как это сделать:
Не пытайтесь найти отрицательные остатки с помощью самого документа инвентаризации. Для этого существуют специализированные отчеты. Мы рекомендуем использовать:
Ведомость по товарам на складах с установленным отбором «Количество Конечный остаток < 0».В большинстве случаев «минусы» возникают из-за нарушения хронологии. Например, реализация товара проведена в 12:00, а документ поступления от поставщика введен в систему позже — в 17:00 или вообще на следующий день задним числом. Решением является групповое перепроведение документов за отчетный период с восстановлением последовательности партионного учета.
Если реального приходного документа нет (например, товар действительно пришел без документов или произошла пересортица), отрицательные остатки необходимо закрыть «в ноль» до начала инвентаризации. Для этого создается технический документ Оприходование товаров.
В крупных базах данных ручной ввод таких документов трудоемок, поэтому программисты часто пишут внешние обработки. Рассмотрим примерный алгоритм работы такой обработки на встроенном языке 1С:
// Пример алгоритма для заполнения технического оприходования минусов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| -ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоДляОприходования
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаИнвентаризации, ) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.КоличествоОстаток < 0";
Запрос.УстановитьПараметр("ДатаИнвентаризации", ДатаПроведения);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ДокОприходование = Документы.ОприходованиеТоваров.СоздатьДокумент();
ДокОприходование.Дата = ДатаПроведения;
ДокОприходование.Склад = ВыбранныйСклад;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ДокОприходование.Товары.Добавить();
НоваяСтрока.Номенклатура = Выборка.Номенклатура;
НоваяСтрока.Количество = Выборка.КоличествоДляОприходования;
// Заполнение цен и счетов учета
КонецЦикла;
ДокОприходование.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
Такая обработка находит все отрицательные позиции на указанную дату и автоматически формирует документ оприходования, который выводит складские остатки в ноль. После проведения этого документа можно приступать к штатному заполнению документа инвентаризации — в него попадут только реальные положительные остатки, и расчет отклонений по результатам пересчета будет абсолютно корректным.
Отрицательные остатки в документе инвентаризации отображаться не должны ни технически, ни методологически. Попытки заставить программу выводить минусы в ИНВ-3 приведут к грубым ошибкам в расчете прибыли и себестоимости. Единственный правильный путь — настроить в программе жесткий запрет списания товаров при отсутствии остатков на складе, а при возникновении «минусов» — оперативно исправлять их до проведения официальной инвентаризации.