Как организовать учет щебня по партиям и рассчитать стоимость хранения в 1С?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

При оказании услуг ответственного хранения навальных и сыпучих грузов (таких как щебень, песчано-гравийные смеси, уголь) часто возникает сложная учетная задача. Физически щебень одной фракции и марки сваливается в общую кучу на площадке. Однако по условиям договоров с клиентами стоимость хранения зависит от срока нахождения конкретного объема товара на складе. Например, первые несколько дней могут быть льготными (нетарифицируемыми), а затем начинает действовать стандартная или прогрессивная daily-ставка.

Рассмотрим, как правильно спроектировать архитектуру регистров в 1С, выбрать метод списания и реализовать алгоритм расчета стоимости хранения для подобных грузов.

1. Архитектура регистра накопления для партионного учета

Для корректного ведения учета в разрезе сроков нахождения товара на складе нам потребуется создать остаточный регистр накопления (например, ОстаткиТоваровНаХранении). Выясним, какие измерения и ресурсы должны входить в структуру регистра:

  1. Измерение Клиент (или Контрагент) — определяет владельца груза. Так как условия хранения и тарифы индивидуальны для каждого заказчика, учет должен вестись строгой изолированности по клиентам.
  2. Измерение Номенклатура — фракция или марка щебня (например, «Щебень фр. 20-40»).
  3. Измерение Партия — ключевой элемент партионного учета. В качестве типа этого измерения может выступать составной тип данных, включающий документы поступления (например, ДокументСсылка.ПоступлениеТоваровУслуг) или отдельный справочник ПартииНоменклатуры. В партии фиксируется дата прихода и начальные характеристики поставки.
  4. Измерение МестоХранения (опционально) — площадка или сектор склада, если на предприятии выделено несколько зон выгрузки.
  5. Ресурс Количество — физический объем щебня в тоннах или кубических метрах.

Наличие измерения Партия позволяет хранить в системе точный остаток каждого поступившего объема и отслеживать дату его прихода, несмотря на то, что физически весь щебень лежит в одной куче.

2. Выбор методики списания (FIFO)

Проанализируем физическую и учетную сторону процесса отгрузки. При фактической погрузке экскаватор забирает щебень сверху кучи — то есть тот, который выгрузили последним (по принципу LIFO). Однако в управленческом учете услуг ответственного хранения всегда применяется метод FIFO (First In, First Out).

При использовании FIFO первыми списываются те партии, которые поступили раньше всего. Это логично и с экономической точки зрения: заказчику выгоднее, чтобы в расчетах в первую очередь «погашались» самые старые объемы, по которым уже истек льготный период или начисляется повышенная ставка хранения.

Разберем пример проведения документа отгрузки с контролем остатков партий по FIFO в коде 1С:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Остатки.Партия КАК Партия,
    |	Остатки.Партия.Дата КАК ДатаПартии,
    |	Остатки.КоличествоОстаток КАК КоличествоОстаток
    |ИЗ
    |	РегистрНакопления.ОстаткиТоваровНаХранении.Остатки(
    |		&Период,
    |		Клиент = &Клиент
    |			И Номенклатура = &Номенклатура) КАК Остатки
    |ГДЕ
    |	Остатки.КоличествоОстаток > 0
    |УПОРЯДОЧИТЬ ПО
    |	ДатаПартии ВОЗР";

Запрос.УстановитьПараметр("Период", ГраницаЗапроса);
Запрос.УстановитьПараметр("Клиент", Выборка.Клиент);
Запрос.УстановитьПараметр("Номенклатура", Выборка.Номенклатура);

ВыборкаПартий = Запрос.Выполнить().Выбрать();
ТребуетсяСписать = Выборка.КоличествоОтгрузки;

Пока ВыборкаПартий.Следующий() И ТребуетсяСписать > 0 Цикл
    СписываемыйОбъем = Мин(ТребуетсяСписать, ВыборкаПартий.КоличествоОстаток);
    
    Движение = Движения.ОстаткиТоваровНаХранении.ДобавитьРасход();
    Движение.Период = ДатаДокумента;
    Движение.Клиент = Выборка.Клиент;
    Движение.Номенклатура = Выборка.Номенклатура;
    Движение.Партия = ВыборкаПартий.Партия;
    Движение.Количество = СписываемыйОбъем;
    
    ТребуетсяСписать = ТребуетсяСписать - СписываемыйОбъем;
КонецЦикла;

3. Учет льготных (нетарифицируемых) дней и расчет хранения

Рассмотрим ситуацию, когда по условиям договора первые $N$ дней с момента поступления партии хранение не оплачивается. Существует два подхода к расчету услуг:

  1. Расчет через ежедневный посуточный цикл: Для каждого дня расчетного периода определяется остаток каждой партии. Если с даты партии прошло больше $N$ дней, на текущий остаток партии начисляется дневной тариф.
  2. Расчет через показатель «Тонно-дни»: Вычисляется суммарное количество тонно-дней, належанных товаром за месяц. Для каждой партии берется фактический остаток за каждый день с учетом того, стал ли этот день тарифицируемым.

Сформулируем математический подход для расчета по конкретной партии. Если партия пришла в день $D_{прих}$, то в день $D_{тек}$ количество дней хранения составляет $K = D_{тек} - D_{прих}$. Если $K > N$ (где $N$ — количество бесплатные дней), день $D_{тек}$ включается в расчетный период, и остаток партии за этот день умножается на дневную ставку тарифа.

Начисление стоимости услуг рекомендуется выполнять отдельным регламентным документом (например, РасчетУслугХранения) в конце месяца. Этот документ считывает срезы остатков на каждый день расчетного периода, распределяет их по партиям и формирует итоговые суммы для выкатывания акта об оказанных услугах заказчику.

4. Специфика учета навальных грузов и технические нюансы

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

  1. Погрешность весового оборудования и списание остатков: Автомобильные и вагонные весы дают погрешность в районе 1–3%. Из-за этого при полной физической отгрузке кучи в 1С может остаться «виртуальный» остаток в несколько сотен килограммов либо образоваться небольшое отрицательное значение. Если не предусмотрена зачистка, система начнет начислять хранение на эту погрешность. Для решения проблемы в алгоритм закладывают автоматический порог зачистки: если остаток партии становится меньше определенной массы (например, менее 0.5% от исходного объема партии), партия обнуляется специальным документом корректировки.
  2. Оптимизация производительности при высоком трафике: Если на весовой за день проходимость составляет десятки машин, проведение документа отгрузки с поиском партий в реальном времени может вызвать блокировки таблиц базы данных. В таких случаях применяют двухстадийное проведение: весовщик оперативно проводит документ отгрузки без указания партий (списывая общий объем), а ночное регламентное задание автоматически расставляет партии по FIFO за прошедший день.

Использование партионного учета по методу FIFO в сочетании с посуточным расчетом тарифицируемых остатков обеспечивает абсолютную прозрачность расчетов с контрагентами и гибкость при изменениях условий договоров.

← На главную