Партии и себестоимость в 1С: списание по FIFO
Себестоимость продажи зависит от того, из какой поставки списан товар. Партионный учёт хранит остаток в разрезе поставок, и на собесе часто дают задачу: списать по FIFO (first in, first out, первым пришёл, первым ушёл) и не потерять копейку. Код ниже прогнан в OneScript 2.1 на таблице значений вместо регистра.
// Так спрашивают: «Как списать товар по FIFO?» «Откуда берётся висящая копейка?» «Чем FIFO отличается от средней себестоимости?» «Почему в УТ 11 документы не считают себестоимость?»
Партии
Партией называют поступление со своей ценой закупки. Регистр партий хранит остаток в разрезе партий: измерения товар, склад и партия, где партия ссылается на документ поступления, ресурсы количество и сумма. Две поставки молока:
Цену закупки измерением не делают: две поставки по одной цене склеятся в одну строку, и порядок списания потеряется. Цена получается делением суммы на количество в момент списания.
Списание по FIFO
FIFO списывает с самых ранних партий. В запросе остатков партий порядок задают УПОРЯДОЧИТЬ ПО Партия.Дата, Партия.Ссылка, а дальше обходят партии, пока не набрали нужное количество. Себестоимость списания из партии равна сумме партии, делённой на количество и умноженной на списываемое. Списываем 15 штук:
Первая партия ушла целиком за 1 000, из второй взяли половину: 1 200 / 10 × 5 = 600. Себестоимость 1 600, а на складе остались 5 штук на 600. Средняя себестоимость посчитала бы иначе: (1 000 + 1 200) / 20 × 15 = 1 650, и партии ей не нужны, хватает суммы и количества остатка.
Нужно = 15;
Итого = 0;
Для Каждого П Из Партии Цикл
Если Нужно = 0 Тогда
Прервать;
КонецЕсли;
Взять = Мин(Нужно, П.Количество);
Если Взять = П.Количество Тогда
Сумма = П.Сумма; // партия целиком уходит всей суммой
Иначе
Сумма = Окр(П.Сумма / П.Количество * Взять, 2);
КонецЕсли;
Сообщить(П.Партия + ": " + Взять + " шт на " + Сумма);
П.Количество = П.Количество - Взять;
П.Сумма = П.Сумма - Сумма;
Итого = Итого + Сумма;
Нужно = Нужно - Взять;
КонецЦикла;
Сообщить("себестоимость: " + Итого);Висящая копейка
Партия 3 штуки на 100 рублей. Если списывать по одной штуке по округлённой цене 33.33, после трёх списаний количество станет 0, а на партии останется копейка. Сумма без количества висит в остатках и портит себестоимость:
Во втором варианте каждое списание считается от текущего остатка партии: 33.33, затем 66.67 / 2 = 33.34 (округление 33.335 до сотых), затем 33.33 / 1. Последнее списание забирает ровно то, что осталось, и копейка не висит. То же правило в коде FIFO выше: если партия уходит целиком, списывают всю её сумму.
Закрытие месяца
В 1С:Управление торговлей 11 (УТ 11) и 1С:ERP документы при проведении пишут только количественные движения. Стоимость считает регламентная операция закрытия месяца сразу по всем товарам: она решает систему уравнений, где себестоимость перемещений и сборок зависит от себестоимости входящих партий.
Отсюда следствие для проведения задним числом: при расчёте себестоимости закрытием месяца хвост документов не перепроводят, а повторяют закрытие с изменённого месяца.
Как отвечать: «Напиши, как списать 15 штук по FIFO из партий 10 по 100 и 10 по 120».
Получаю остатки партий запросом, упорядоченные по дате и ссылке партии. Обхожу их: из первой беру все 10 штук и списываю всю её сумму, 1 000, из второй беру 5, это 1 200 разделить на 10 и умножить на 5, то есть 600. Себестоимость 1 600. Если партия уходит целиком, списываю всю оставшуюся сумму, а не цену за штуку, иначе на партии с нулевым количеством останется копейка.
Кандидат решает задачу числами, называет порядок партий и сам вспоминает про копейку. На собесе это обычно отдельный добивающий вопрос, и тут он закрыт заранее.
На чём валят
- −Делают цену закупки измерением регистра партий. Поставки по одной цене склеиваются. Партия ссылается на документ поступления, цена считается делением.
- −Списывают по округлённой цене единицы. Остаётся висящая копейка. Считают долю от остатка, целую партию списывают всей суммой.
- −Упорядочивают партии по номеру документа. Номер строковый. Порядок по дате и ссылке партии.
- −Перепроводят документы после правки задним числом в УТ 11. Стоимость там считает закрытие месяца. Его и повторяют с изменённого месяца.
Проверь себя
Пять вопросов из банка по этой подтеме. Всего их 12, остальные разбираются в тренажёре.
- Чем учёт по средней себестоимости отличается от партионного?A)Единица стоит как среднее по остаткуB)Себестоимость берётся из последнего поступленияC)Себестоимость не хранится, считается в отчётахD)Средняя считается по ценам продаж за месяц
показать ответ и разбор
+A)Единица стоит как среднее по остатку// разбор: По средней списывают по стоимости, равной сумме остатков, делённой на количество: партии не нужны. Учёт проще, но себестоимость «размывается» между поступлениями. Партионный учёт точнее, но дороже в проведении и пересчётах.
- Какое измерение добавляют в регистр остатков товаров для партионного учёта?A)Номер строки поступленияB)Цена закупкиC)Дата поступленияD)Партия — ссылка на документ поступления
показать ответ и разбор
+D)Партия — ссылка на документ поступления// разбор: Партией обычно делают ссылку на документ поступления: от неё доступны дата и поставщик, а стоимость партии хранится ресурсом «Сумма» рядом с количеством. Цену как измерение не берут: две поставки по одной цене склеятся, а цена в разрезе не нужна, её даёт сумма.
- Как получить себестоимость списываемого количества 7 из партии с остатком 10 шт. на 1000 ₽?A)1000 × 7 = 7000 ₽B)1000 − 7 = 993 ₽C)1000 / 10 × 7 = 700 ₽D)Всю сумму партии, 1000 ₽
показать ответ и разбор
+C)1000 / 10 × 7 = 700 ₽// разбор: Себестоимость списания пропорциональна доле количества: сумма остатка партии, умноженная на списываемое и делённая на остаток. Если списывают весь остаток партии, берут всю её сумму, чтобы не терять копейки на округлении. Отсюда приём «последнее списание забирает остаток суммы».
- Реализация на 15 шт. Партии по FIFO: 10 шт. по 100 ₽, 8 шт. по 120 ₽. Какая себестоимость?A)1800 ₽B)1500 ₽C)1600 ₽D)1660 ₽
показать ответ и разбор
+C)1600 ₽// разбор: По FIFO берём всю первую партию: 10 × 100 = 1000. Оставшиеся 5 шт. — из второй: 5 × 120 = 600. Итого 1600 ₽. Остаток второй партии — 3 шт. на 360 ₽. По средней получилось бы иначе: (1000 + 960) / 18 × 15 = 1633,33 ₽.
- Почему в ERP и УТ 11 себестоимость не считается при проведении реализации, а рассчитывается при закрытии месяца?A)Потому что платформа не умеет вести партииB)Без перепроводки хвоста и блокировок партийC)Потому что FIFO запрещён в учёте РФD)Чтобы реализация не имела движений по складу
показать ответ и разбор
+B)Без перепроводки хвоста и блокировок партий// разбор: Партионное списание при проведении требует блокировок партий и перепроведения всех последующих документов при правке задним числом. В ERP документы пишут только количественные движения, а стоимость рассчитывается регламентной операцией за месяц сразу для всех. Проведение становится быстрее, правки прошлого — дешевле.
дальше
Теорию прочитал. Навык ставится повторением
В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, бесплатная часть практики — одна сессия дня в сутки.