|
Алгоритм списания партий по FIFO, есть ли ошибка? | ☑ | ||
---|---|---|---|---|
0
devlabnn
13.07.13
✎
01:35
|
Алгоритм предназначен для поиска набора партий, из которых должен списаться товар.
Суть алгоритма очень проста: имеем на входе - номенклатуру (+ набор аналитик типа склад, организация - не суть важно) - дату списания - количество списания. - Остаток товара на момент до списания - таблицу приходов (партий) товара с ценой партии, упорядоченную по убыванию даты 1) Ищем партию, с которой начинается списание, исходя из остатка товара на момент списания. Искомая партия - та строка таблицы приходов, где сумма предидущих приходов, включая текущий приход (нарастающий итог) впервые превысила или стала равной остатку товара на заданную дату. Например, остаток товара 10 шт, таблица прихода такая: Партия Цена Количество Количество (нар. итог) Партия3 10 2 2 *Партия2 20 9 11 Партия1 10 15 26 искомая партия -Партия2 (т.к. 11>=10). С этой партии начнется списание. 2) Обрезаем таблицу партий: оставляем только партии до нашей искомой включительно (незабываем, что партии упорядочены по убыванию даты). Получим Партия Цена Количество Количество (нар. итог) Партия3 10 2 2 *Партия2 20 9 11 3) Отсечем количество из искомой партии, которое нельзя использовать: сумма партий - остаток. Количество в искомой партии = (Количество в искомой партии) - (сумма партий) + (остаток) в нашем примере: 9 - 11 + 10 = 8. получим: Партия Цена Количество Партия3 10 2 *Партия2 20 8 На данном этапе фактически получены остатки по партиям на дату списания без использования регистра остатков партий. Осталось лишь оставить в этой таблице самые старые партии, исходя из требуемого кол-ва списания. Кстати, на этом этапе мы знаем себестоимость товара - (10*2 + 20*8)/10 = 18 4) Отсортируем таблицу в обратном порядке: Партия Цена Количество Количество (нарастающий итог) Партия2 20 8 8 Партия3 10 2 10 Оставим в таблице только те партии, где нарастающий итог по кол-ву не превысит списываемое кол-во + 1 партию. В последней партии изменим кол-во на разность между нарастающим итогом и списываемым кол-вом. Предположим, требуется списать 9 единиц товара: Партия Цена Количество Партия2 20 8 Партия3 10 1 (10-9) Таблица списания партий получена. 6 Плюсы - не требуется (не используется) регистр остатков по партиям товара, в следствие чего предидущие ошибки парт учета не влияют на будущее списание себестоимости (известная ситуация, когда приход на час позже, чем расход, и весь последующий парт. учет полетел) - быстрое восстановление парт. учета - быстрый подсчет себестоимости, когда нет остатков по партиям |
|||
1
Aleksey
13.07.13
✎
01:38
|
а что делать с доп.расходами?
|
|||
2
devlabnn
13.07.13
✎
01:43
|
(1) как видите, они не учитываются - не было необходимости. Но, уверен, их можно прикрутить
|
|||
3
ХомаБрут
13.07.13
✎
01:50
|
а как без регистра партий мы увидим, что уже попользовались данной партией раньше?
|
|||
4
Darych
13.07.13
✎
01:52
|
(3)+ и ты попробуй про сроки годности товаров подумать
|
|||
5
Aleksey
13.07.13
✎
01:57
|
(3) никак, предполагаться что в прошлый раз списано все "правильно"
Правда я несовсем понимаю 1. как в возврате от покупателя определить партию 2. Как оприходования будет влиять на партии? Порождать свои новые текущей датой? |
|||
6
devlabnn
13.07.13
✎
02:33
|
(5) 1. В моей организации возврат от покупателя является партией (с ценой партии равной цене возврата). В противном случае добавляем возвратны в таблицу поступлений с ценой партии, из которой был возврат
2. Оприходования - это партии |
|||
7
Reaper_1c
13.07.13
✎
07:38
|
кг.
1. При работе задним числом учет становится неконтролируемой кашей. 2. Алгоритмы, построенные на базе расчета нарастающих итогов, работают медленнее, чем нормальное списание остатка партий. 3. Блокировки ласково улыбаются автору и предвкушают самосуд. В результате от проблем обычного партионного учета не избавились, а новых понаделали. |
|||
8
shuhard
13.07.13
✎
07:42
|
(0) минус один и жирный - производительность, которая будет падать с удлинением цепочки документов
|
|||
9
Aleksey
13.07.13
✎
10:12
|
(7) А блокировка на что?
|
|||
10
Reaper_1c
13.07.13
✎
10:27
|
(9) Видимо на все документы, образующие партии.
|
|||
11
Aleksey
13.07.13
✎
11:09
|
(10) Не понял. список партий - это обычный РС, При поступлении туд добавляется одна строчка, при списании идет чтения. В каком месте и когда блокировка возникнет?
P.S. У меня просто по похожему принципу организовано "подбор" партий при оприходования. |
|||
12
MKZM
13.07.13
✎
11:14
|
Вместо того, чтобы заставить пользователей не класть прибор на работу, придумываем всякую велосипед.
|
|||
13
Reaper_1c
13.07.13
✎
13:00
|
(11) Да какая разница, если чтение должно быть блокирующим?
|
|||
14
Aleksey
13.07.13
✎
23:37
|
(13) это ненужно
|
|||
15
RomanYS
14.07.13
✎
00:58
|
Не вижу плюсов.
"- не требуется (не используется) регистр остатков по партиям товара, в следствие чего предидущие ошибки парт учета не влияют на будущее списание себестоимости (известная ситуация, когда приход на час позже, чем расход, и весь последующий парт. учет полетел)" То, что ошибки нельзя выявить, не значит, что их нет. При твоем алгоритме ты узнаешь, только когда склад обнулится, а стоимость прихода и расхода не совпадет. Единственное применение подобным алгоритмам: когда детальный учет не ведется, а заказчик очень хочет "детальный" отчет, а прикручивать новый регистр нецелесообразно. Например, классификация задолженности по срокам, когда нет учета по документам. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |