Что значит добавить возможность ведения остатков номенклатуры по методам ФИФО и по средней?

Программист Управленческий учет IT и автоматизация бизнеса
← На главную

При разработке учетных систем на платформе 1С перед программистом часто встает задача организации суммового учета товарно-материальных ценностей. Вопрос о том, как реализовать методы оценки ФИФО (First In, First Out) и По средней, является базовым для понимания архитектуры регистров накопления и алгоритмов проведения документов. Давайте разберем, что это значит на практике и как спроектировать систему для решения такой задачи.

Понимание концепции учета партий

Для реализации данных методов нам недостаточно просто вести количественный учет товара на складе. Мы должны понимать, как определить стоимость списываемого товара. Суть задачи заключается в разделении количественного учета и стоимостного (суммового). В системе 1С это достигается за счет правильной структуры регистра накопления и логики его заполнения при выполнении движений по регистрам.

Реализация метода «По средней»

Метод оценки По средней предполагает, что стоимость списания товара определяется как средневзвешенная величина. В момент списания мы берем всю накопленную сумму по данной номенклатуре и делим ее на общее количество товара, хранящегося на складе. В результате мы получаем среднюю цену единицы, по которой и списываем товар.

С точки зрения метаданных 1С, для учета По средней нам необходимо:

  1. Создать РегистрНакопления, содержащий ресурсы Количество и Сумма.
  2. В измерениях регистра достаточно указать Номенклатура и Склад.
  3. При движении расхода алгоритм проведения должен получить текущие остатки по Количеству и Сумме, рассчитать среднюю цену, а затем сформировать движения по списанию, используя этот коэффициент.
  4. Важно понимать: при данном методе Партия как разрез учета в регистре не используется, так как все поступления «смешиваются» в одну общую стоимость.

Реализация метода «ФИФО»

Метод ФИФО (первым пришел — первым ушел) требует более детального учета. Здесь мы не можем просто «смешать» цены, так как нам нужно строго соблюдать хронологию списания партий поступления. Каждая единица товара должна «помнить» свою цену закупки, установленную в конкретном документе прихода.

Для реализации ФИФО выполним следующие шаги:

  1. В измерения регистра накопления обязательно добавляем Партия. В качестве типа данных для этого измерения используется ДокументСсылка (конкретные документы прихода, такие как ПоступлениеТоваровУслуг).
  2. При проведении документа расхода мы должны выполнить запрос к регистру остатков, отсортировав записи по Периоду (дате документа партии).
  3. Алгоритм списания должен выглядеть как цикл: берем запись с самой ранней датой, списываем необходимое количество в рамках этой партии, и если количества недостаточно — переходим к следующей по времени записи (следующей партии).

Технические аспекты реализации движка

Рассмотрим, как объединить эти подходы в рамках одной конфигурации. Чтобы система могла выбирать метод оценки, мы вводим настройку (обычно в Константах или в РегистреСведений «Учетная политика»).

В модуле проведения документа используем конструкцию, определяющую способ получения данных для списания:


// Пример логики выбора метода списания в модуле проведения
МетодУчета = УчетнаяПолитика.ПолучитьМетодСписания();

Если МетодУчета = Перечисления.МетодыСписания.ПоСредней Тогда
    // Запрос к регистру без учета измерения Партия
    ТекстЗапроса = "ВЫБРАТЬ СуммаОстаток, КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(...)";
ИначеЕсли МетодУчета = Перечисления.МетодыСписания.ФИФО Тогда
    // Запрос к регистру с учетом измерения Партия, сортировка по периоду
    ТекстЗапроса = "ВЫБРАТЬ Партия, СуммаОстаток, КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(...) УПОРЯДОЧИТЬ ПО Партия.МоментВремени";
КонецЕсли;

Важные замечания по проектированию

При реализации методов списания необходимо учитывать следующие нюансы:

Подводя итог, можно сказать, что реализация методов списания — это вопрос управления измерениями регистра и логикой построения запроса к остаткам в модуле проведения. ФИФО требует хранения аналитики по партиям и строгого соблюдения временного порядка, в то время как По средней требует математической обработки накопленных суммовых показателей.

← На главную