Каждый бухгалтер, работающий в программе 1С:Бухгалтерия 3.0, хотя бы раз сталкивался с ситуацией, когда после проведения процедуры закрытия месяца себестоимость списания или остатка какого-то товара или готовой продукции принимает астрономические масштабы. Суммы корректировок могут исчисляться миллионами и даже миллиардами рублей. Особенно часто это происходит с продукцией, которая активно перемещается между складами или имеет сложный цикл производства, например, в сельском хозяйстве (соя, кукуруза, рапс).
В этой статье мы подробно разберем, почему программа рассчитывает некорректную себестоимость, рассмотрим скрытые математические алгоритмы работы конфигурации, выявим основные ошибки пользователей и пошагово пройдем весь путь локализации и исправления этой проблемы в информационной базе.
---
В современных версиях 1С:Бухгалтерия 3.0 расчет себестоимости при выполнении регламентной операции Корректировка стоимости списания производится не простым последовательным вычитанием партий, а путем решения сложных систем линейных уравнений. Программа строит математическую модель движения запасов за месяц. Эта модель учитывает начальные остатки, приходы, расходы, перемещения между складами и затраты, собранные на производственных счетах.
Когда алгоритм сталкивается с противоречивыми, логически неверными или разорванными во времени данными, математика программы дает сбой. Чтобы свести баланс к нулю по количеству, система вынуждена распределять накопленную стоимость на мизерный или нулевой остаток товара. В результате деления на сверхмалые величины получаются гигантские «виртуальные» суммы корректировки стоимости списания.
Рассмотрим подробнее основные причины, которые приводят к возникновению этой ошибки.
---
Проанализируем детально четыре самые распространенные технические проблемы, из-за которых ломается расчет себестоимости в программе:
Если в течение одного отчетного периода (например, апреля) один и тот же объем номенклатуры Рапс перемещался между складами «туда-обратно» (со Склада 1 на Склад 2, затем обратно на Склад 1, а потом на Склад 3), алгоритм расчета средней стоимости зацикливается. Программа пытается бесконечно перераспределять стоимость по кругу. В итоге на одной из итераций расчета возникает математическая погрешность, которая лавинообразно увеличивает итоговую сумму списания.
В настройках проведения документов (раздел Администрирование — Проведение документов) может быть активна опция «Разрешить списание запасов при отсутствии остатков». Если документ реализации или перемещения проводится в течение дня по времени раньше, чем документ фактического поступления (или выпуска) товара, возникает временный «минус» в количестве. При проведении такого документа программа списывает только количество с нулевой стоимостью. В конце месяца регламентная операция пытается доначислить средневзвешенную стоимость на этот списанный «минус». Происходит некорректное деление, приводящее к миллионным корректировкам.
Программа 1С ведет учет запасов параллельно на бухгалтерских счетах (например, Счет43 или Счет41) и в специальных регистрах накопления. Если в текущем или прошлых периодах бухгалтер делал ручные корректировки проводок (документом Операция, введенная вручную), то на счетах учета суммы изменились, а в регистрах накопления остались прежними. Закрытие месяца, ориентируясь на регистры, пытается «выровнять» эти показатели с бухгалтерским учетом и генерирует фантомные миллионные суммы корректировок.
Перейдем в настройки параметров учета (раздел Администрирование — Параметры учета — Настройка плана счетов — Учет запасов). Если учет по складам настроен только «По количеству», то суммовой учет ведется в целом по организации. При попытке перемещения запасов между складами в середине месяца программа не может корректно определить стоимость перемещаемой партии на конкретном складе, что при расчете средней стоимости за месяц вызывает непредсказуемые искажения себестоимости.
---
Если мы имеем дело с производством сельхозпродукции (номенклатурные группы: соя, пшеница, рапс), то здесь на первый план выходит отраслевая специфика работы со счетами Счет43 (Готовая продукция) и Счет20 (Основное производство).
Выясним две главные причины ошибок, связанные с производством:
Счет43 по плановым ценам (так как фактические затраты на уборку и выращивание урожая будут известны только в конце сезона). Если в прошлых месяцах продукция выпускалась по плановым ценам, а в апреле происходит только реализация без новых выпусков и без затрат на Счет20, программа пытается скорректировать плановую себестоимость до фактической. Если за предыдущие периоды накопились ошибки в распределении затрат, вся эта колоссальная разница единовременно списывается в текущем месяце.
Рапс урожай 2023 и Рапс урожай 2024). Если затраты по новому урожаю, возникшие в мае или июне, были отнесены на ту же номенклатурную группу, по которой в апреле продавали остатки прошлого года, система попытается распределить новые затраты на уже реализованную продукцию, искажая себестоимость апреля.
---
Разберем по шагам, как локализовать ошибку и вернуть себестоимость в адекватное русло. Для этого выполним последовательно следующие действия.
Сформируем отчет Оборотно-сальдовая ведомость по счету Счет43 (или Счет41) за проблемный месяц. В настройках отчета обязательно укажем группировку по субконто Номенклатура и Склады, а в периодичности выберем пункт По дням. Внимательно проанализируем конечный остаток по дням. Если в какой-то из дней количество уходит в минус (даже если к концу месяца оно снова закрывается в ноль), мы нашли источник проблемы. Нам необходимо зайти в первичные документы этого дня и исправить время проведения документов так, чтобы приход всегда был раньше расхода. Для этой задачи можно использовать отчет для выявления и контроля отрицательных остатков товаров.
Если в один день происходят и перемещение, и реализация, и поступление товара, крайне важно соблюдать правильное время документов. Проанализируем движения документов. Нам нужно настроить время документов следующим образом:
Такой подход гарантирует, что программа на каждую секунду проведения расходного документа будет видеть реальный суммовой и количественный остаток на складе.
Перейдем в раздел Отчеты — Экспресс-проверка. Установим период (проблемный месяц) и нажмем кнопку Выполнить проверку. Нас интересует раздел «Ведение бухгалтерского учета» и подраздел «Лимиты остатков материалов и товаров». Программа автоматически выдаст список документов, которые привели к отрицательным остаткам на складах, и укажет на несоответствие проводок регистрам накопления.
Откроем помощник Закрытие месяца. Кликнем левой кнопкой мыши по операции Корректировка стоимости списания и выберем пункт Показать проводки. Найдем строку с аномальной суммой (наши 8,3 млн рублей) и посмотрим, какой именно документ указан в субконто проводки (это может быть конкретная реализация или перемещение). Затем сформируем отчет Справка-расчет себестоимости за этот месяц. В этом отчете мы наглядно увидим математическую формулу, по которой рассчитывалась средняя стоимость списания единицы продукции.
Ниже приведен пример программной логики, которую выполняет платформа 1С при контроле остатков перед расчетом себестоимости. Мы можем использовать аналогичный запрос в консоли запросов для быстрого поиска строк с отрицательными остатками:
// Запрос для поиска отрицательных остатков на складах в разрезе номенклатуры
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстатки.Субконто2 КАК Склад,
| ХозрасчетныйОстатки.СуммаРазвернутыйОстатокКт КАК ОтрицательнаяСумма,
| ХозрасчетныйОстатки.КоличествоРазвернутыйОстатокКт КАК ОтрицательноеКоличество
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ГотоваяПродукция), , ) КАК ХозрасчетныйОстатки
|ГДЕ
| (ХозрасчетныйОстатки.КоличествоРазвернутыйОстатокКт < 0
| ИЛИ ХозрасчетныйОстатки.СуммаРазвернутыйОстатокКт < 0)";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаписьЖурналаРегистрации("Внимание! Обнаружен отрицательный остаток по номенклатуре: " + Выборка.Номенклатура);
КонецЦикла;
КонецЕсли;
---
Проанализируем конкретную ситуацию нашего пользователя. В апреле у организации не было затрат на производство (на счете Счет20 пусто), но на складах лежал готовый рапс урожая прошлого года. В апреле бухгалтер делает внутренние перемещения рапса по складам и оформляет документы реализации. После проведения регламентной операции Корректировка стоимости списания на одну из реализаций падает огромная корректировка.
Что произошло? При перемещении рапса со склада на склад в середине месяца была нарушена последовательность проведения документов. Перемещение провели раньше, чем программа зафиксировала остаток на отправляющем складе. Количество списалось, а сумма зависла. Закрытие месяца попыталось скорректировать эту стоимость и распределило накопленную разницу за весь прошлый год на одну-единственную апрельскую реализацию.
Как мы решили проблему:
Рапс по дням за апрель.Рапс урожай текущего года, чтобы затраты нового сезона не смешивались с остатками прошлого года на Счет43.---
Чтобы избежать повторения подобных ситуаций в будущем, рекомендуем соблюдать простые правила ведения учета в 1С:Бухгалтерии 3.0:
Счет10, Счет41, Счет43. Если нужно скорректировать стоимость или количество, всегда применяйте специализированные документы: Комплектация номенклатуры, Оприходование товаров или Списание товаров.Счет20 на счет Счет43.