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