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