При работе с современными конфигурациями на базе 1С:ERP (включая УТ 11 и КА 2) специалисты часто сталкиваются с ситуацией, которая кажется ошибкой системы: документ списания успешно проводится "задним числом", даже если на выбранную дату товара на складе фактически еще не было. Рассмотрим подробнее, почему так происходит, как работает программная логика и какими методами можно обеспечить корректный контроль остатков.
Для понимания проблемы проанализируем разницу между старыми системами (УТ 10.3, УПП) и 1С:ERP. В устаревших конфигурациях контроль остатков всегда выполнялся на конкретный момент времени (дата и секунда документа). Если товара не хватало именно в эту секунду, проведение блокировалось. В 1С:ERP идеология изменилась.
Разберем основные причины такого поведения системы:
Выясним причину, по которой документ "запоминает" наличие товара. В 1С:ERP ключевую роль играет техническая табличная часть ВидыЗапасов. Она определяет, какой именно товар списывается: собственный, принятый на комиссию или принадлежащий другой организации холдинга (Интеркампани).
Проанализируем алгоритм работы документа при проведении:
ЗаполнитьВидыЗапасовПоТаблицеОстатковСформироватьВТНовыеРезервы().ВидыЗапасов.ВидыЗапасов, если они не были принудительно очищены.Посмотрим на настройки системы. В разделе "НСИ и администрирование" — "Склад и доставка" можно выбрать одну из методик контроля:
Если специфика вашего учета требует жесткого запрета на возникновение отрицательных остатков в любой точке временной оси, рассмотрим возможные варианты решения задачи.
Рассмотрим этот метод как самый эффективный с точки зрения административного управления. Вместо того чтобы пытаться заставить систему проверять остатки "в прошлом", ограничьте возможность самих пользователей менять документы прошлых периодов. Установка даты запрета даже на уровне вчерашнего дня заставит сотрудников вводить документы оперативно, что автоматически исключит большинство проблем с хронологией.
Проанализируем настройки финансового учета. В разделе "Финансовый результат и контроллинг" — "Учет товаров" необходимо проверить флаг "Контролировать остатки товаров организаций". Этот механизм работает более строго, чем складской контроль, и часто предотвращает списание товара, который еще не поступил по документам на конкретное юридическое лицо.
Для каждого склада в системе предусмотрена настройка "Контролировать обеспечение". Убедитесь, что она включена. Однако помните, что даже при включенном флаге система может разрешить неоперативное проведение, если это не противоречит логике текущих свободных остатков.
Если типовые средства не помогают, можно прибегнуть к разработке расширения. Посмотрим на пример логики, которую можно внедрить:
Необходимо перехватить процедуру проведения и добавить проверку остатков по регистру ТоварыНаСкладах или РаспределениеЗапасов строго на момент времени проводимого документа. Для этого можно использовать код, подобный следующему:
// Пример логики для вставки в расширение
Процедура ПередПроведением(Отказ, РежимПроведения)
Если РежимПроведения = РежимПроведенияДанных.Неоперативный Тогда
// Выполняем запрос к остаткам на ДатуДокумента
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Остатки.ВНаличииОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени, ...) КАК Остатки";
Запрос.УстановитьПараметр("МоментВремени", ЭтотОбъект.МоментВремени());
// Проверяем наличие и выводим сообщение при дефиците
КонецЕсли;
КонецПроцедуры
Важно помнить, что такая доработка может существенно снизить производительность системы и лишить ее гибкости, заложенной разработчиками 1С. Перед внедрением такого решения проанализируйте, действительно ли "краснота" в отчетах внутри месяца мешает работе, или это лишь вопрос привычки персонала к интерфейсам старых программ.
Выясним итоговую позицию: поведение 1С:ERP 2.4, при котором контроль остатков игнорирует дату документа при неоперативном проведении, является штатным. Оно обусловлено архитектурой РАУЗ и механизмом Видов запасов. Для исправления ситуации рекомендуется использовать дату запрета редактирования или настроить строгий контроль остатков организаций. Переход на контроль "секунда в секунду" требует программного вмешательства и идет вразрез с методологией системы.