В работе с конфигурацией 1С:Управление нашей фирмой (УНФ) пользователи и технические специалисты часто сталкиваются с ситуацией, когда после выполнения регламентной операции «Закрытие месяца» себестоимость списанных товаров неожиданно сторнируется в ноль. В отчетах это выглядит как движение с отрицательной суммой, которое полностью перекрывает накопленные затраты, оставляя количественный остаток верным, но финансовый результат — пустым.
В этой статье мы подробно разберем, почему возникает такая ситуация, проанализируем механизмы работы регистра Запасы и рассмотрим техническое решение, которое позволяет устранить проблему разрыва аналитики.
Рассмотрим типичную ситуацию, которая приводит к ошибке. Предположим, у нас есть следующая последовательность операций:
Заказом покупателя.Проанализируем, что происходит в регистре накопления Запасы. При перемещении товара, если в документе заполнен заказ, система записывает данные в специальные поля. Даже если в настройках программы отключен флаг «Резервирование запасов», аналитика по заказам продолжает играть важную роль в алгоритмах расчета себестоимости.
Ключевая проблема кроется в заполнении реквизита Корр. заказ (Корреспондирующий заказ) в регистре Запасы. Разберем механизм по шагам:
Перемещение запасов с указанием заказа, программа фиксирует переход стоимости между складами.Расходная накладная оформляется без жесткой привязки к той же цепочке аналитик или если алгоритм Закрытия месяца видит несоответствие между «приходом» по заказу на розничный склад и «списанием» без учета этого заказа, система считает, что себестоимость была сформирована некорректно.В результате процедура «Расчет себестоимости» пытается «схлопнуть» остатки. Видя «зависшую» сумму по одной аналитике (с заказом) и отрицательный остаток по другой (без заказа), программа формирует сторно, чтобы привести баланс к нулю по конкретному разрезу учета.
Если бизнес-процесс требует указывать заказ в перемещении для информативности, но при этом резервирование не используется и мешает расчету себестоимости, можно прибегнуть к программному исправлению. Как показывает практика, затирание реквизита Корр. заказ в движениях документа Перемещение запасов решает проблему сторнирования.
Рассмотрим пример кода, который можно внедрить через расширение конфигурации. Нам необходимо перехватить момент записи движений регистра Запасы для документа Перемещение запасов.
&Вместо("ПередЗаписью")
Процедура Расшир_ПередЗаписью(Отказ, Замещение)
// Проверяем, что документ является перемещением запасов
Если ТипЗнч(ЭтотОбъект.Ссылка) = Тип("ДокументСсылка.ПеремещениеЗапасов") Тогда
// Проходим по всем движениям регистра "Запасы"
Для Каждого Движение Из ЭтотОбъект.Движения.Запасы Цикл
// Если реквизит КоррЗаказ заполнен, очищаем его
Если ЗначениеЗаполнено(Движение.КоррЗаказ) Тогда
Движение.КоррЗаказ = Неопределено;
КонецЕсли;
// Также стоит обратить внимание на реквизит Заказ,
// если он мешает сопоставлению в Расходной накладной
Если ЗначениеЗаполнено(Движение.Заказ) И ЭтотОбъект.Статус = Перечисления.СтатусыПеремещенияЗапасов.Завершено Тогда
// Логика очистки зависит от того, используется ли резервирование
// Движение.Заказ = Неопределено;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Важно: Перед применением такого решения необходимо убедиться, что организация действительно не использует функционал резервирования товаров под заказы, иначе очистка этой аналитики приведет к невозможности отследить, под какой заказ был перемещен товар.
Выясним, какие еще настройки могут влиять на обнуление себестоимости, помимо заказов покупателей:
Расходной накладной строго позже времени Перемещения запасов. В противном случае на момент продажи остатка еще «нет», и закрытие месяца будет пытаться исправить отрицательные остатки через корректирующие записи.Чтобы точно определить причину обнуления себестоимости, выполните следующие действия:
Закрытие месяца). Найдите строку со сторнирующей суммой.Организация, Номенклатура, Склад, Заказ, Партия.Заказ, а основное списание прошло по пустой аналитике Заказ — вы нашли причину.Использование расширения для очистки реквизита Корр. заказ является радикальным, но эффективным методом, когда типовые настройки распределения запасов не позволяют добиться корректного расчета себестоимости при сложной логистике внутри компании.