Себестоимость ноль после закрытия месяца: какой документ виноват (Бухгалтерия для Казахстана 3.0)
Задачи пользователя - Закрытие периода
Закрыли месяц в Бухгалтерии для Казахстана 3.0 (дальше БК 3.0), открыли оборотно-сальдовую ведомость (ОСВ) по 7010 в разрезе номенклатуры, а у части товаров себестоимость ноль. Повторное закрытие месяца тут не поможет. Документ "Корректировка стоимости списания товаров" в релизе 3.0.40.1 пересчитывает только те позиции, у которых за месяц были допрасходы или ГТД (грузовая таможенная декларация). Продажа, проведённая раньше прихода, так и остаётся с нулём, сколько месяц ни перезакрывай. Экспресс-проверка ведения учёта по отрицательным остаткам на таком месяце отвечает "Ошибок не обнаружено".
Ниже разбор на тестовой базе, где я воспроизвёл четыре причины нулевой себестоимости на пяти товарах, закрыл месяц штатно и посмотрел, что об этом знает типовая. Потом как найти документ-виновник запросом и обработкой. Счета казахстанские, для тех, кто привык к российскому плану: 1330 Товары (41), 1310 Сырьё и материалы (10), 1320 Готовая продукция (43), 8110 Основное производство (20), 7010 Себестоимость реализации (90.02).
Откуда берётся ноль
Сумму списания документ считает в момент проведения, по остатку счёта 1330 (1310, 1320) на свой момент времени. Средняя стоимость остатка, умноженная на количество. Если остатка не хватает, а контроль отрицательных остатков выключен (при включённом продажу без остатка просто не провести), недостающее количество уходит отдельной проводкой без суммы. Вот этот кусок из общего модуля УчетТоваров, процедура СписатьОстаткиТоваров, сокращённо:
// Несписанное количество добавим отдельной строкой в таблицу списанных партий. Если КоличествоОсталосьПогасить > 0 Тогда СписаннаяПартия = ТаблицаСписанныеТовары.Добавить(); ЗаполнитьЗначенияСвойств(СписаннаяПартия, СтрокаДокумента); СписаннаяПартия.Количество = КоличествоОсталосьПогасить; // Если контролируем остаток, то несписанное количество не нужно отражать СписаннаяПартия.ОтражатьВБухгалтерскомУчете = НЕ КонтролироватьОстаток; КонецЕсли;
Сумма у этой строки не заполняется, в проводку уходит количество и ноль. Пользователь в этот момент видит сообщение, которое потом ищут в поиске дословно:
Бух.учет. Строка: 1. Не найдено 10 шт товара <Какао 250 г>, счет учета 1330, склад Основной склад. 10 шт товара <Какао 250 г> отражено как отрицательное списание. В конце месяце рекомендуется перепровести документы для получения корректного финансового результата
Сообщение живёт ровно одно проведение. В документе его потом нет, в закрытии месяца оно не повторяется. Через неделю никто уже не помнит, какой документ его выдавал.
Почему закрытие месяца его не лечит
В БК 3.0 закрытие разбито на два документа: "Корректировка стоимости списания товаров" и "Закрытие месяца". Список позиций для первого собирает модуль менеджера документа, функция ТекстЗапросаМассивТоваровПоВидамУчетаДляКорректировки, сокращённо:
ТекстЗапроса = " |ВЫБРАТЬ | ""БУ"" КАК ПрефиксУчета, | ТаблицаОстатковИПриходов.Счет КАК Счет, | ТаблицаОстатковИПриходов.Субконто1 КАК Номенклатура |ИЗ | РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , | Счет В ИЕРАРХИИ (&СписокСчетовБУ), &ВидыСубконто, Организация = &Организация) КАК ТаблицаОстатковИПриходов |ГДЕ | (ТаблицаОстатковИПриходов.Регистратор ССЫЛКА Документ.ПоступлениеДопРасходов | ИЛИ ТаблицаОстатковИПриходов.Регистратор ССЫЛКА Документ.ГТДИмпорт) |..."; // дальше группировка и тот же отбор по налоговому регистру
В расчёт попадают только позиции, у которых в месяце были допрасходы или ГТД. Остальных корректировка не касается вообще.
Я сначала этому не поверил и заложил на тестовой базе проверку, которая, как я думал, пройдёт чистой: продажа какао 5-го числа без остатка, приход 15-го, в том же месяце. Ждал, что закрытие досчитает среднюю и ноль пропадёт. После закрытия августа у продажи какао осталось 10 шт на 0. Рядом корица: продана вся 9-го, 21-го пришли допрасходы по доставке на 2 000. Закрытие досписало эти 2 000 в себестоимость продажи. Код и прогон сходятся: закрытие в БК 3.0 чинит допрасходы и ГТД, а продажу раньше прихода не чинит. Так какао из проверки, которая должна была пройти чистой, попало в список ошибок.
Лекарство от такого нуля типовая называет сама, в хвосте сообщения: перепровести документы. Но перепроведение помогает не всегда, и ниже видно почему.
Четыре причины и как их отличить
Тестовая база: копия чистой БК 3.0.40.1, одна организация, контроль отрицательных остатков выключен, способ оценки по средней. Август закрыт штатно, двумя документами. Причины разные, а в ведомости они выглядят одинаково: количество списано, суммы нет.
| Позиция | Что было | Что показала ОСВ после закрытия |
|---|---|---|
| Какао 250 г | продажа 10 шт 05.08, приход 40 шт 15.08 | себестоимость продажи 0 |
| Чай зелёный 100 г | продажа 30 шт 25.08, приход 50 шт 03.09 | 0, остаток на конец августа -30 |
| Сахар 1 кг | продажа 20 шт 14.08 без остатка; после закрытия ввели приход 50 шт датой 10.08, потом август закрыли ещё раз | 0, хотя на 14.08 по сегодняшним данным было 50 шт на 25 000 |
| Мука 2 кг | приход 10 шт на 15 000, продажа 25 шт, больше приходов нет | 15 000 за 10 шт и 0 за 15 шт, остаток -15 |
| Фартук кухонный | ткань на 48 000 списана на 8110 без номенклатурной группы, выпуск 50 фартуков, продажа 30 | выпуск на 1320 с суммой 0, продажа фартуков 0 |
Чем они отличаются, видно только на оси времени. Надо пройти документы позиции по дате и времени, то есть так, как их увидит перепроведение, и после каждого посчитать остаток количества и суммы. Дальше смотрим, что было на момент нулевого списания:
- остатка не хватало, а приход этой позиции стоит позже по дате - расход раньше прихода. Какао (приход через 10 дней) и зелёный чай (приход через 9 дней, уже в сентябре). Перепроведение не поможет: приход и после него стоит позже. Лечится датой: либо товар пришёл раньше, чем его оприходовали, либо продали раньше, чем получили;
- остаток по сегодняшним данным был, и стоимость у него была, а документ списал ноль - приход задним числом. Сахар: продажу от 14.08 провели, когда сахара в базе ещё не было, приход датой 10.08 ввели позже, а продажу после этого не перепровели. Вот тут перепроведение как раз и нужно;
- остатка не хватало, и прихода позже нет - красное сальдо. Мука. Где-то не введён приход или продали не тот товар;
- количество на остатке есть, а суммы у него нет - приход без суммы. Фартуки: выпуск пришёл с нулём, и продажа унаследовала ноль. Виновник тут - документ, который отнёс затраты производства не туда: ни продажа, ни выпуск сами по себе не ошиблись. Про него отдельный раздел.
Сахар в цепочке выглядит так (остаток после каждого документа):
| Дата | Документ | Приход | Расход | Сумма | Остаток, шт | Остаток, сумма |
|---|---|---|---|---|---|---|
| 01.08 | остаток на начало | 0 | 0 | |||
| 10.08 10:00 | Поступление ТМЗ и услуг | 50 | 25 000 | 50 | 25 000 | |
| 14.08 11:30 | Реализация ТМЗ и услуг | 20 | 0 | 30 | 25 000 |
Продажа ушла по нулю при 50 шт на остатке по 500 за штуку. По датам она позже прихода, значит, провели её раньше, чем приход появился в базе: в момент проведения сахара не было. Время ввода документа в проводках не видно, но и не нужно: противоречие видно в самих числах. И ноль тут не последняя беда: оставшиеся 30 шт стоят на балансе 25 000, то есть по 833 вместо 500, и следующая продажа по средней спишет сахар дороже. Недосписанные 10 000 уедут в себестоимость следующих продаж.
"Нет базы распределения" и фартуки по нулю
С фартуками типовая хоть что-то сказала. После закрытия в документе "Закрытие месяца" лежит текст:
По результатам анализа производственных затрат: Нет базы распределения на себестоимость продукции (услуг) прямых расходов, учитываемых следующим образом: Счет учета : 8110. Подразделение : Основное подразделение. Номенклатурная группа : . База распределения : плановая себестоимость продукции. Проверьте наличие данных о выпуске продукции.
Там стоит "Номенклатурная группа : ." с пустым местом. Выпуск фартуков оформлен по основной номенклатурной группе, а требование-накладная списала ткань на 8110 с пустой группой. Закрытие не знает, на какой выпуск отнести 48 000 затрат без группы, и оставляет их висеть на 8110. Выпуск получает ноль, продажа фартуков тоже ноль.
Типовая записала это комментарием, не ошибкой, и состояние закрытия при этом "Выполнено", зелёная галочка. И документ, который отнёс затраты без группы, в тексте не назван. Назван счёт и подразделение, а требований-накладных за месяц может быть сотня. При закрытии сентября на той же базе к комментарию добавилась уже ошибка "На начало месяца существуют остатки по счетам прямых затрат... Номенклатурная группа : . Сумма : 48 000", и тоже без документа.
Пустой счёт затрат типовая в требование-накладную не пропустит: у реквизита стоит проверка заполнения. А у субконто счёта затрат проверки нет, и пустую номенклатурную группу документ проводит спокойно. На моей базе хватило одного документа.
Что говорит Экспресс-проверка
"Экспресс-проверка ведения учета" за июль и август на этой же базе. Нужная проверка там есть: "Проверка на наличие отрицательных остатков на балансовых счетах". Результат за оба месяца: "Ошибок не обнаружено". Единственная ошибка в отчёте - незаполненный производственный календарь.
Судя по результату, проверка смотрит отрицательный остаток на конец периода по сумме. У сахара и какао остаток на конец положительный, у муки и зелёного чая минус только по количеству, а по сумме ноль. У товара с красным сальдо, которое тянется с июля (про июльскую часть базы ниже, в разделе про обработку), то же самое: минус 6 шт на ноль. Для этой проверки оба месяца чистые.
Как найти виновника запросом
Задача одна: получить обороты счёта по каждому документу и пройти их по дате, держа остаток. Периодичность "Регистратор" у виртуальной таблицы оборотов даёт строку на каждый документ, упорядочивание по Регистратор.МоментВремени ставит их так, как их увидит перепроведение. Порядок, в котором документы вводили, в проводках не виден, и это не мешает: где он разошёлся с датой, выдаёт сумма списания, как у сахара:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Т.Субконто1 КАК Номенклатура, | Т.Регистратор КАК Регистратор, | Т.Регистратор.МоментВремени КАК Момент, | СУММА(ЕСТЬNULL(Т.КоличествоОборотДт, 0) - ЕСТЬNULL(Т.КоличествоОборотКт, 0)) КАК Количество, | СУММА(ЕСТЬNULL(Т.СуммаОборотДт, 0) - ЕСТЬNULL(Т.СуммаОборотКт, 0)) КАК Сумма |ИЗ | РегистрБухгалтерии.Типовой.Обороты(&Начало, &Конец, Регистратор, | Счет В ИЕРАРХИИ (&Счета), &ВидыСубконто, Организация = &Организация, , ) КАК Т |СГРУППИРОВАТЬ ПО | Т.Субконто1, Т.Регистратор, Т.Регистратор.МоментВремени |УПОРЯДОЧИТЬ ПО | Номенклатура, Момент"; Запрос.УстановитьПараметр("ВидыСубконто", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве( ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура));
Остаток на начало месяца берётся тем же регистром, таблицей Остатки на Новый Граница(Начало, ВидГраницы.Исключая). Дальше обычный цикл: прибавили движение, запомнили остаток. В запросе у расхода количество и сумма со знаком минус, поэтому в цикле их удобно развернуть. Схема упрощённая, только нулевые списания; муку с неполной суммой она не поймает, для неё в обработке отдельная ветка:
Если Количество < 0 Тогда Списано = -Количество; СуммаСписания = -Сумма; Если СуммаСписания < 0.005 Тогда Если ОстатокКоличество >= Списано Тогда // товар был: смотрим, была ли у него стоимость Вердикт = ?(ОстатокСумма > 0, "Приход задним числом", "Приход без суммы"); Иначе // товара не хватило: ищем следующий приход этой позиции Вердикт = ?(ЕстьПриходПозже, "Расход раньше прихода", "Красное сальдо"); КонецЕсли; КонецЕсли; КонецЕсли; ОстатокКоличество = ОстатокКоличество + Количество; ОстатокСумма = ОстатокСумма + Сумма;
Две тонкости сверх схемы. Мука списана с неполной суммой: 15 000 за 25 шт. В проводках у неё есть отдельная строка 15 шт на ноль, но схема суммирует движения по документу, и по документу в целом сумма не нулевая. Такую строку ловит сравнение суммы списания со средней ценой остатка, и делать его можно только там, где остатка не хватало: при достаточном остатке и ФИФО (списание по первым поступившим партиям) сумма законно отличается от средней, и полезут ложные тревоги. И второе: корректировка при закрытии приходит проводкой без количества, одной суммой по кредиту (у корицы это Дт 7010 Кт 1330 на 2 000 без количества). Если закрытие досписало сумму, строка ошибкой уже не является, и её надо снять.
Почему не хватает простого запроса "Кт 1330 с количеством и нулевой суммой"? Он покажет, где ноль, но не скажет почему. Отличить приход задним числом от опоздавшего прихода можно только по остатку на момент списания, а для этого документы надо пройти по порядку.
Для производства отдельный запрос: движения с субконто по дебету 8110 за месяц, где вид субконто "Номенклатурные группы" есть, а значение пустое. Регистратор такой строки и есть виновник "Нет базы распределения".
Обработка
Всё это я собрал во внешнюю обработку "Почему себестоимость ноль после закрытия месяца: документ-виновник по каждому списанию (Бухгалтерия для Казахстана 3.0)". Кнопка "Разобрать ошибку" проходит все позиции 1310, 1320, 1330 и затраты на 8110 за выбранный месяц, ставит каждой нулевой строке вердикт и документ-виновник. Сверху крупная строка итога, красная или зелёная, под ней текст, который записала типовая в "Закрытие месяца". "Показать цепочку" раскладывает документы выбранной позиции с остатком после каждого, проблемная строка подсвечена, двойной щелчок открывает документ. "Выгрузить в Markdown" отдаёт разбор файлом, который можно отдать коллеге или нейросети.
На августе тестовой базы обработка нашла 7 строк. Пять из них - товары из таблицы выше: какао и зелёный чай (расход раньше прихода), сахар (приход задним числом), мука (красное сальдо), фартуки (выпуск без себестоимости, виновник - требование-накладная). Шестая - само требование-накладная, отдельной строкой "затраты без номенклатурной группы". Седьмая - товар из июльской части базы, у которого минус пришёл с прошлого месяца. Корицу обработка не тронула: её закрытие исправило. В сентябре к ним добавляется ваниль. Она похожа на корицу, а исход другой. Корицу продали и получили по ней допрасходы в одном месяце. Ваниль всю продали в августе, а допрасходы на 1 500 пришли 5 сентября. Сентябрь на стенде закрыт так же штатно, но продаж ванили в сентябре не было, и после закрытия 1 500 так и висят на 1330 без товара: на августовскую продажу корректировка сентября их не отнесла. Это ещё один вердикт, "сумма без количества".
Отдельно проверил, что она не шумит. Июль на той же базе: 300 товаров, 557 списаний в многострочных реализациях, у четырёх товаров ошибки заложены руками. Обработка нашла ровно эти четыре товара, и вердикт у каждого совпал с тем, что закладывалось: два расхода раньше прихода, один приход задним числом, одно красное сальдо. Для сверки рядом гонял запрос без всякой логики: проводки Кт 1330 с количеством и нулевой суммой. Он показал те же четыре товара. По остальным 296 ложных строк ноль. Предел у этой проверки есть: все четыре июльские ошибки нулевые, ветку с неполной суммой, как у муки, на объёме я не гонял.
Обработка только читает. Ничего не перепроводит и не корректирует: исправление остаётся за бухгалтером, и по вердикту понятно, что именно исправлять.
Где граница
Проверено на БК 3.0, релиз 3.0.40.1, платформа 8.3.27, способ оценки по средней. Для Бухгалтерии предприятия (БП) 3.0 в России обработка берёт счета 41, 10, 43 и 20 по регистру "Хозрасчетный", но ни этот вариант, ни то, как российская корректировка обходится с продажей раньше прихода, я на живой базе не проверял. Обработка на корректировку не опирается: она смотрит проводки уже после закрытия и досписанную сумму видит. ФИФО разобрано по коду типовой (списание идёт той же веткой), прогона на ФИФО не было. Смешанный случай я тоже не прогонял: продажа раньше прихода у товара, по которому в том же месяце были допрасходы. Такой товар корректировка в расчёт возьмёт, и что она сделает с нулевой строкой, я не знаю. Обработка в любом случае смотрит проводки после закрытия. При учёте по складам на 1330 приход на другой склад даст вердикт "приход задним числом", хотя виноват склад, поэтому подсказка про склад стоит прямо в тексте вердикта.
Частые вопросы
Почему закрытие месяца не исправляет нулевую себестоимость? В Бухгалтерии для Казахстана корректировка стоимости при закрытии пересчитывает только позиции с допрасходами и ГТД. Ноль, который получился из-за списания без остатка, она не трогает. Исправлять надо документы: дату прихода или перепроведение.
Чем "расход раньше прихода" отличается от "прихода задним числом"? В первом случае приход и сейчас стоит позже списания, перепроведение не поможет, надо исправлять дату. Во втором товар на момент списания уже был: приход ввели позже с более ранней датой, а списание с тех пор не перепроводилось. Тут хватает перепровести.
Обработка что-нибудь исправляет? Нет. Ничего не перепроводит, не создаёт корректировок и не меняет настройки. Исправляет бухгалтер по вердикту.
Почему Экспресс-проверка молчит? Судя по результату на тестовой базе, она смотрит отрицательный остаток на конец периода по сумме. Нулевое списание при положительном остатке минуса не даёт вовсе, а минус по количеству при нулевой сумме, как у муки, она ошибкой не посчитала.
На каких конфигурациях работает? Проверена на Бухгалтерии для Казахстана 3.0.40.1. Вариант для БП 3.0 РФ заложен словарём счетов, но на живой базе не проверялся. В чужой конфигурации обработка пишет "структура не та" и ничего не считает.
Зачем выгрузка в Markdown? Файл читается без 1С: его можно отдать коллеге или нейросети. Итог, текст типовой, находки и цепочки внутри, вопрос для нейросети уже дописан в конце.
Вопрос к тем, кто закрывает месяцы в БК
В Бухгалтерии для Казахстана типовая сама советует "перепровести документы", а закрытие такой ноль не трогает. Как у вас: перепроводите месяц целиком перед каждым закрытием или разбираете нули уже после, когда их нашёл аудитор? И кто держит контроль отрицательных остатков включённым, несмотря на ругань кассиров?
Обработка из этой статьи: Почему себестоимость ноль после закрытия месяца: документ-виновник по каждому списанию (Бухгалтерия для Казахстана 3.0).
Другие наши инструменты
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.