Приветствуем коллег! Сегодня мы разберем одну из самых частых, болезненных и методологически сложных проблем в конфигурациях 1С на классическом партионном учете (таких как 1С:Управление торговым предприятием 8.2, 1С:Управление производственным предприятием 1.3, 1С:Комплексная автоматизация 1.1 и 1С:Управление торговлей 10.3). Речь идет о промежуточных отрицательных остатках номенклатуры по складу внутри дня.
Проанализируем типичную ситуацию: на конец месяца (или даже на конец конкретного дня) общее количество товара сходится, и итоговое сальдо положительное. Однако в течение дня документы проводились неоперативно («задним числом»): сначала была проведена реализация товара, а только затем — документ его поступления или перемещения с другого склада. В результате в системе образуется временной разрыв, когда товар ушел «в минус» на несколько часов. Выясним, почему это ломает расчет себестоимости, и детально разберем шаги по устранению этой проблемы.
---
Прежде чем перейти к методам решения, разберем физику процесса внутри платформы 1С. Когда в настройках параметров учета разрешено списание при отсутствии запасов, система ведет себя следующим образом:
РеализацияТоваровУслуг программа пытается найти свободные партии на указанном складе в регистре накопления ПартииТоваровНаСкладах на точную секунду проведения документа.ПроведениеПоПартиям (Восстановление последовательности партионного учета), она идет строго в хронологическом порядке. Дойдя до момента реализации, обработка видит, что партии поступления еще нет, и оставляет себестоимость списания нулевой. Соответственно, ваша валовая прибыль в отчетах искусственно завышается, а себестоимость продаж искажается.Для исправления этой ситуации нам необходимо либо физически перестроить время документов внутри дня («плюсы перед минусами»), либо точечно выровнять регистры. Рассмотрим подробнее каждый из вариантов.
---
Это самый экологичный и правильный способ с точки зрения методологии 1С. Если дневной баланс по товару положительный, нам нужно программно сдвинуть все приходные документы на начало дня, а расходные — на конец.
Разберем алгоритм работы такой автоматической обработки. Мы можем написать внешнюю обработку, которая будет выполнять следующие действия:
ПоступлениеТоваровУслуг, ОприходованиеТоваров, ВозвратТоваровОтПокупателя, приходные документы ПеремещениеТоваров.РеализацияТоваровУслуг, СписаниеТоваров, ТребованиеНакладная, расходные документы ПеремещениеТоваров.Посмотрим на пример кода, реализующий базовый сдвиг времени для расходных документов в конец дня:
// Пример программного изменения времени документов для устранения минусов внутри дня
Процедура ПереместитьРасходныеДокументыНаКонецДня(ДатаАнализа) Экспорт
// Запрос для выбора расходных документов за день
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Реализация.Ссылка КАК Ссылка,
| Реализация.Дата КАК Дата
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
| Реализация.Дата МЕЖДУ &НачалоДня И &КонецДня
| И Реализация.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ДатаАнализа));
Запрос.УстановитьПараметр("КонецДня", КонецДня(ДатаАнализа));
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
// Начальное время для сдвига расходов (например, 18:00:00)
ТекущееВремяСдвига = НачалоДня(ДатаАнализа) + 18 * 3600;
Пока Выборка.Следующий() Цикл
ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
// Устанавливаем новое время с секундным интервалом во избежание коллизий блокировок
ДокОбъект.Дата = ТекущееВремяСдвига;
ТекущееВремяСдвига = ТекущееВремяСдвига + 1;
Попытка
// Записываем документ с проведением в неоперативном режиме
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Сообщить("Документ " + ДокОбъект.Ссылка + " успешно сдвинут на конец дня.");
Исключение
Сообщить("Ошибка проведения документа: " + ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Важное примечание: Сдвиг документов на 00:00:00 или конец дня должен быть логически обоснован. Например, если у вас оформлен возврат товаров от покупателя, он физически не может произойти раньше, чем сама продажа (если это продажа того же дня). Однако для большинства классических оптовых цепочек перемещение приходов на утро полностью решает проблему «минусов» и позволяет партионному учету отработать корректно.
---
Если документов за период слишком много или сдвиг дат ломает другие связанные контуры учета, необходимо локализовать конкретные ошибки. Для этого профессионалы используют методику сравнения двух ключевых регистров накопления:
РегистрНакопления.ТоварыНаСкладах — отвечает за физическое (оперативное) наличие товара.РегистрНакопления.ПартииТоваровНаСкладах — отвечает за стоимостную оценку и распределение по партиям.Проанализируем ситуацию: очень часто из-за неоперативного проведения остаток по регистру ТоварыНаСкладах равен нулю, а по регистру ПартииТоваровНаСкладах висит незакрытое развернутое сальдо (например, +10 штук по одной партии и -10 по «партии отрицательных остатков»). Это происходит потому, что приходный документ провелся по партиям позже, чем расходный, и они «не встретились».
Чтобы локализовать такие места, разработайте или воспользуйтесь типовым отчетом по сравнению остатков этих регистров. Нам нужно получить таблицу вида:
| Номенклатура | Склад | Остаток (Товары на складах) | Остаток (Партии на складах) | Расхождение |
|---|---|---|---|---|
| Кабель силовой ВВГ 3х2.5 | Основной склад | 150 м | 150 м (в т.ч. -50 м технический минус) | Развернутое сальдо в партиях |
После выявления расхождений необходимо запустить стандартную обработку «Проведение по партиям» с даты первого расхождения. Обработка пересчитает движения по партиям, сопоставит расходы с новыми приходами и закроет технические минусовые партии реальной стоимостью.
---
Бывают случаи, когда период (например, прошлый месяц или квартал) уже полностью закрыт, сдана регламентированная отчетность, и любое перепроведение или изменение времени документов категорически запрещено политикой компании.
В этом случае у нас есть два пути решения:
КорректировкаЗаписейРегистров:
Мы создаем этот документ на 1-е число открытого (нового) периода. С помощью специальной обработки заполняем в нем вкладку регистра ПартииТоваровНаСкладах. Нам нужно сделать движения «Приход» по реальным партиям, которые зависли на остатках, и движения «Расход» по техническим партиям отрицательных остатков. Таким образом, мы «схлопываем» развернутое сальдо, не затрагивая первичные документы прошлого периода.
На конец отчетного месяца все отрицательные остатки перекрываются документом ОприходованиеТоваров на склад по нулевой стоимости (или по стоимости последнего прихода) на статью прочих доходов. Это временно выравнивает складские остатки. В начале следующего месяца эти же объемы списываются документом СписаниеТоваров на прочие расходы. Данный метод обязательно нужно согласовывать с главным бухгалтером, так как он напрямую влияет на балансовые счета учета доходов и расходов.
---
Пытаться автоматизировать ликвидацию хаоса в конце месяца — это борьба с последствиями, а не с причиной. Чтобы навсегда забыть о проблемах с партионным учетом, внедрим превентивные меры:
Это самый эффективный административный метод. В дополнительных правах пользователей (или настройках параметров учета) необходимо снять флаги Разрешить превышение остатков товаров на складе и Разрешить превышение остатков товаров организации. Пользователь физически не сможет провести расходный документ, если товара нет на складе на момент проведения.
Вместо того чтобы ждать конца месяца, настроим ежедневное автоматическое восстановление партий. Для этого в базе создается регламентное задание, которое каждую ночь запускает обработку проведения по партиям. Если возникают ошибки или реальные минусы, ответственный менеджер увидит их уже на следующее утро и сможет оперативно исправить (оформить пропущенное поступление или перемещение).
Подводя итог, отметим: если вы работаете в конфигурациях 1С старого поколения (на обычном партионном учете), контроль отрицательных остатков должен быть ежедневным процессом. Своевременное использование обработки по упорядочиванию времени документов внутри дня позволит вам получать всегда корректную и актуальную валовую прибыль без необходимости ручной корректировки сотен документов в конце месяца.