В современных конфигурациях, таких как 1С:Управление торговлей 11 или 1С:ERP, реализован механизм расчета себестоимости, основанный на регламентных операциях по закрытию месяца. Это кардинально отличается от классического подхода «партионного учета», где списание по методу FIFO (First-In, First-Out) происходило непосредственно в момент проведения документа. Давайте разберемся, почему это так и какие пути решения существуют для тех, кому жизненно необходимо видеть списание «первым пришел — первым ушел» в реальном времени.
Типовая логика УТ 11 ориентирована на высокую производительность при массовых продажах. Если система будет в момент каждого списания пересчитывать границы последовательностей и искать нужную партию, это приведет к блокировкам базы данных и существенному замедлению работы склада. Именно поэтому фирма 1С использует регистры с накоплением и расчет себестоимости «задним числом». Однако, если требования вашего бизнеса или специфика работы склада (например, ОХ — ответственное хранение) требуют жесткого контроля партий, рассмотрим доступные варианты.
Наиболее щадящий путь для системы — использование Серий номенклатуры. Мы можем превратить серии в инструмент партионного учета, не ломая при этом базовый механизм закрытия месяца. Разберем этот алгоритм по шагам:
СерииНоменклатуры дополнительные реквизиты, такие как ДатаПоступления, НомерПоставки, ЦенаПриобретения.ПриобретениеТоваровУслуг используем расширение или обработчик события, чтобы автоматически создавать или назначать серии с соответствующими атрибутами.FIFO (выбираем серии с наименьшей ДатойПоступления).Этот метод позволяет видеть себестоимость «на лету» в документах, так как цена фактически привязана к конкретному экземпляру (серии) товара. Однако будьте осторожны: если номенклатура имеет высокую оборачиваемость, количество записей в справочнике СерииНоменклатуры будет расти очень быстро.
// Пример логики подбора серии по FIFO
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Серии.Ссылка КАК Серия
|ИЗ
| Справочник.СерииНоменклатуры КАК Серии
|ГДЕ
| Серии.Номенклатура = &Номенклатура
|УПОРЯДОЧИТЬ ПО
| Серии.ДатаПоступления ВОЗР";
// Далее выполняем обход и заполнение ТЧ документа
Если бизнес требует строгого FIFO, а типовой метод «средней» не устраивает, некоторые разработчики приходят к созданию собственных регистров накопления. Проанализируем плюсы и минусы:
При таком подходе вам придется полностью переписать отчеты по валовым продажам, чтобы они брали данные не из типовых регистров, а из вашего нового регистра ПартииТоваровОрганизаций. Это требует высокой квалификации разработчика и готовности поддерживать этот функционал при выходе каждого обновления от фирмы 1С.
Прежде чем приступать к разработке, задайте себе следующие вопросы:
УТ 11.FIFO возврат товара должен четко указывать, в какую партию он возвращается, иначе алгоритм «схлопнется».FIFO усложняется многократно из-за необходимости отслеживать цепочки передач товаров между компаниями.Заключение: Реализация классического FIFO через прямое вмешательство в движения документов — это тяжелая архитектурная задача. Если проект не предполагает очень узкой специализации (например, торговля скоропортящимися товарами или специфическое хранение), мы рекомендуем использовать типовые инструменты, дополненные Сериями. Это позволит сохранить целостность данных и упростить дальнейшее обновление конфигурации 1С:Управление торговлей 11.