В процессе работы с современными конфигурациями на платформе 1С:Предприятие 8.3, такими как Управление торговлей 11, Комплексная автоматизация 2 или ERP Управление предприятием, пользователи часто сталкиваются с ситуацией, когда при проведении документов «задним числом» система допускает появление отрицательных остатков. Рассмотрим типовой сценарий: мы оформляем поступление товара вчерашним числом, а затем проводим реализацию сегодняшним числом (или наоборот), и в какой-то момент обнаруживаем «минусы» в складских отчетах, хотя галочка «Контролировать остатки» в настройках склада установлена. Выясним причину такого поведения системы и разберем, как с этим работать.
Проанализируем базовую логику, заложенную разработчиками фирмы «1С». В актуальных редакциях систем автоматизации торгового и производственного учета контроль остатков является оперативным. Это означает, что проверка наличия товара на складе производится не на момент времени, указанный в документе (дата документа), а на текущий момент времени (реальное время нажатия кнопки «Провести»).
Рассмотрим подробнее, почему выбрана именно такая модель:
Таким образом, если мы проводим документ реализации «задним числом» (например, вчерашней датой), система все равно посмотрит, сколько товара на полках сейчас. Если сейчас остаток положительный, документ проведется. Однако, если за период между «вчера» и «сегодня» были другие движения, в хронологической последовательности может образоваться временной разрыв с отрицательным значением.
Проведение документов в обратной последовательности или задним числом порождает проблему, которую специалисты часто называют «петлей времени». Разберем ситуацию на примере:
В результате, если мы сформируем отчет «Ведомость по товарам на складах» с детализацией по дням, мы увидим, что с 10-го по 15-е число у нас на складе было -5 штук. Это классический пример того, как оперативный контроль пропускает «минус» в прошлом.
Важный нюанс: Подобные действия фатально влияют на расчет себестоимости и партионный учет. Даже если документ провелся, регламентная операция Расчет себестоимости может выдать ошибку или рассчитать стоимость некорректно, так как на момент расхода (10-е число) партий прихода еще не существовало в системе.
Поскольку оперативный контроль не гарантирует отсутствие минусов в прошлом, в типовых конфигурациях 1С (ERP, КА, УТ) предусмотрены другие механизмы для поддержания порядка:
1. Отчет «Контроль отрицательных остатков»
В разделе «Склад и доставка — Отчеты по складу» доступен специализированный отчет. В отличие от обычных ведомостей, он анализирует именно те моменты, где последовательность была нарушена и возникли логические минусы. Рекомендуется проверять этот отчет перед закрытием месяца.
2. Настройка контроля при отмене проведения
В современных релизах (начиная с УТ 11.5 / ERP 2.5) в настройках системы появилась опция «Контролировать остатки при отмене проведения и уменьшении количества». Если вы попытаетесь отменить проведение старого приходного документа, на основании которого товар уже был продан позже, система заблокирует это действие, так как это приведет к «минусу» в текущем периоде.
Многие пользователи спрашивают: можно ли штатно переключить систему в режим контроля «на дату документа»? Ответ — нет, штатной «галочки» для этого не существует. Однако задачу можно решить организационными или техническими методами.
Это самый правильный метод с точки зрения методологии 1С. Установка Даты запрета редактирования (НСИ и администрирование — Поддержка и обслуживание) исключает возможность ввода или изменения документов в закрытых периодах. Это приучает пользователей вводить документы оперативно, что сводит проблему контроля задним числом к минимуму.
Для программистов существует возможность вмешаться в логику проведения. Проанализируем, где именно происходит проверка. В типовых конфигурациях за проверку остатков отвечает механизм проведения через «Границы фактических остатков». Проверка обычно инициируется в модулях менеджеров документов или в общих модулях, связанных с проведением (например, через процедуру ИнициализироватьДанныеДокумента).
Если стоит задача жестко ограничить списание, можно создать расширение, которое будет выполнять запрос к регистру накопления ТоварыНаСкладах на момент времени документа. Пример логики запроса:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени, Склад = &Склад И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("МоментВремени", ЭтотОбъект.МоментВремени());
Запрос.УстановитьПараметр("Склад", Склад);
// ... установка остальных параметров
Внимание! Помните, что включение такого контроля программным путем значительно увеличит нагрузку на базу данных и может привести к конфликтам блокировок при одновременной работе пользователей.
Выясним, как ведет себя система, если включен механизм передачи товаров между организациями. В этом случае контроль остатков становится еще более «либеральным». Система может разрешить отгрузку товара с организации «А», если он есть в наличии на организации «Б», подразумевая, что позже будет оформлен документ Передача товаров между организациями. При проведении задним числом в схеме Intercompany «минусы» могут быть не видны до момента запуска помощника формирования передач в конце месяца. Поэтому при использовании этой схемы особенно важно следить за оперативным вводом документов.
Подведем итог нашему анализу:
Понимание этой логики работы системы поможет вам правильно выстроить регламенты работы сотрудников склада и отдела продаж, избегая хаоса в складском учете и расчете себестоимости.