|
|
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
ak4Допустим юзер решил ввести расход архднем.... Тогда придется нарастающим исправлять остатки в табличке "Даты_проводок" ,а если вдруг красное сальдо в каком нить дне? Вы как поступаете в этом случае? Сгачала проверить, потом проводить, ессно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 10:00 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafmсуществует простое правило: храните те данные, к которым чаще всего обращаются.... текущий остаток. О проблемах тек. остатка я уже говорил, добавлю еще конкуренцию за ресурс. На практике такой подход годится для простых и небольших учетных систем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 10:02 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
мод iscrafmсуществует простое правило: храните те данные, к которым чаще всего обращаются.... текущий остаток. О проблемах тек. остатка я уже говорил, добавлю еще конкуренцию за ресурс. На практике такой подход годится для простых и небольших учетных систем. Когда Вы делаете подобные заявления, то всегда добавляйте "по моему мнению" или "в моей практике". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 11:51 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
2 мод -- просмотрел все, не нашел где Вы говорили о проблемах текущих остатков. Хотел почитать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:04 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
мод iscrafmсуществует простое правило: храните те данные, к которым чаще всего обращаются.... текущий остаток. О проблемах тек. остатка я уже говорил, добавлю еще конкуренцию за ресурс. На практике такой подход годится для простых и небольших учетных систем.Отчасти согласен - "текущего" остатка достаточно только для "небольших" задач. В "больших" системах всегда есть нужда хранить остатки на некие моменты, по которым "бьются" отчеты - дни, месяцы. Если этого не делать, то для расчета остатка задним числом придется анализировать все изменения, произошедшие в базе с момента запуска или ретроспективно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:12 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
DeColo®esОтчасти согласен - "текущего" остатка достаточно только для "небольших" задач. В "больших" системах всегда есть нужда хранить остатки на некие моменты, по которым "бьются" отчеты - дни, месяцы. Если этого не делать, то для расчета остатка задним числом придется анализировать все изменения, произошедшие в базе с момента запуска или ретроспективно. :) Вы делали, пробовали или просто так думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:14 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafm:) Вы делали, пробовали или просто так думаете?Именно. В одной системе как раз сначала хранил только текущий остаток. После того, как для склада потребовалась "реальная работа", а не просто "сверка наличия", пришлось перерабатывать систему под перерасчет ежедневных остатков. Иначе расчет "учетных карточек" шел бы неприлично долго. И не было бы возможности удалять накладные N-летней давности. В данный момент тоже работаю с системой, в которой без этих "промежуточных" остатков все загнется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:20 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
DeColo®es iscrafm:) Вы делали, пробовали или просто так думаете?Именно. В одной системе как раз сначала хранил только текущий остаток. После того, как для склада потребовалась "реальная работа", а не просто "сверка наличия", пришлось перерабатывать систему под перерасчет ежедневных остатков. Иначе расчет "учетных карточек" шел бы неприлично долго. И не было бы возможности удалять накладные N-летней давности. 1. Что за зверь такой "учетная карточка"? 2. Что такое "реальная работа"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:22 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
DeColo®esВ данный момент тоже работаю с системой, в которой без этих "промежуточных" остатков все загнется. систему можно сделать таким образом, что загнется в любом варианте. Причем с промежуточными остатками еще более вероятней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:24 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafmдобавляйте "по моему мнению" или "в моей практике". :) Да, конечно (стараюсь, иногда забываю :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:26 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafmпросмотрел все, не нашел где Вы говорили о проблемах текущих остатков. Здесь /topic/361159&pg=1#3390064 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:28 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
мод iscrafmпросмотрел все, не нашел где Вы говорили о проблемах текущих остатков. Здесь /topic/361159&pg=1#3390064 спсб. Только к сожалению не нашел ответов на вопросы. Почему не эффективно и что такое невосстановимые... --- Складывается мнение, что складская система занимается расчетом обороток по периодам, а не управляет конкурентным доступом к ресурсам (ну и конечно много чем еще). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 12:35 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
Используется такое представление данных. В табличке хранится: 1. входящий остаток на начало года для каждого объекта учета 2. и в зависимости от даты движений порождаются записи для каждого объекта учета: входящий остаток относительно начала года приход за день расход за день исходящий остаток относительно начала года Там же хранится запись планового остатка для длительных операций. Остаток(реальный) за день для объекта учета определяется как: сумма остатка из последней записи на начало года + сумма остатка из последней записи движения. Конечно, из этой схемы возникает процедура закрытия года. При наличие соответствующих индексов работает быстро для любого дня независимо от количества оборотов. А провод задним числом - это болезнь, которой еще многие бухи болеют. На сколько я не ошибаюсь, есть понятие сторно для этих случаев, хотя в большинстве систем возможность отката есть. При этих возможностях действительно надо проверять на корректность отражения исправлений в будущем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 13:57 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafm Почему не эффективно и что такое невосстановимые... 1. Тяжело считать остатки на дальние даты. 2. М.б. много update-ов на одну и ту-же запись. При разрушении тек. остатка (по ошибке) его в общем случае не восстановить. iscrafm Складывается мнение, что складская система занимается расчетом обороток по периодам, а не управляет конкурентным доступом к ресурсам. Как вариант, можно блокировать счет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:36 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
Валентин Кдля справки: Опердень - оперативный день. Вообще-то операционный. Оперативный - это в милицию. vladvolНа сколько я не ошибаюсь, есть понятие сторно для этих случаев, хотя в большинстве систем возможность отката есть Для справки, понятие сторно совсем не равнозначно откату. iscrafm...храните те данные, к которым чаще всего обращаются.... текущий остаток. Остальное все можно вытянуть запросами, впрочем как и пересчитать текущий остаток по транзакциям Чтобы придать предметность спору. Положим, по счету каждый день существует от 5 до 10 тыс. проводок (коррсчет небольшого банка/филиала). Как быстро вы вытяните запросами остаток/обороты на начало года, если прошло несколько лет работы? Как быстро вы будете это вытягивать, если у вас сотни-тысячи счетов? А ведь существуют еще многочисленные нюансы, которых мы не касаемся - типа операций планируемых, проведенных, существует учет по различным разрезам аналитики (регистрам) - который, как правило, хранится в той же таблице операций... С другой стороны, если уж вы собрались держать остаток текущий, то вы все равно уже собрались держать расчитанное число (т.е. помимо первоисточника). И разница - хранить ли только текущий или все остатки на дату движения, невелика. А крупность системы определяется как раз тем, что выбрано дискретностью периода - день, месяц там, год и т. п. Nobody faults but mine... (LZ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:38 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
aag мне почему-то казалось, что мы здесь склад обсуждаем :) хранение остатков по счетам немного другая тема, хотя и тоже интересная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:43 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafm aag мне почему-то казалось, что мы здесь склад обсуждаем :) хранение остатков по счетам немного другая тема, хотя и тоже интереснаяОк, то же самое - по складу: Допустим, некая "ревизия". Нужно: Поднять карточки учета по Н-ному к-ву позиций товара. Ну с этим просто - это просто приход/расход по позиции с расчетом остатка на каждый день. Но что делать, если есть задача "хранить инфо строго за последние 3 года, не больше"? Ведь тогда нужно иметь "входящий остаток по позиции"... Далее - просто отчет по "движению товара" на складе. За "9 месяцев". Позиций товара - 3 тысячи, поступлений/расходов - 100 позиций в день. Нужно получить остаток по каждой позиции на 2 даты. Для этого нужно перелопатить (конечно, с использованием индексов, но все же) - 3000*2*100*9*24(пусть будут только рабочие дни) = ~130М записей. Или просканировать 43200 записей с принятием решения по кадой из них - куда какую в каком агрегате из 6000 использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 16:36 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafm aag мне почему-то казалось, что мы здесь склад обсуждаем :) хранение остатков по счетам немного другая тема, хотя и тоже интереснаяОк, то же самое - по складу: Допустим, некая "ревизия". Нужно: Поднять карточки учета по Н-ному к-ву позиций товара. Ну с этим просто - это просто приход/расход по позиции с расчетом остатка на каждый день. Но что делать, если есть задача "хранить инфо строго за последние 3 года, не больше"? Ведь тогда нужно иметь "входящий остаток по позиции"... Далее - просто отчет по "движению товара" на складе. За "9 месяцев". Позиций товара - 3 тысячи, поступлений/расходов - 100 позиций в день. Нужно получить остаток по каждой позиции на 2 даты. Для этого нужно перелопатить (конечно, с использованием индексов, но все же) - 3000*2*100*9*24(пусть будут только рабочие дни) = ~130М записей. Или просканировать 43200 записей с принятием решения по кадой из них - куда какую в каком агрегате из 6000 использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 16:36 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
DeColo®es whitems: id, itemid, whid, openqty, onhand, created, .... whtransactions: id, batchid, trtype, whitemid, qty, ... При учете(posting) документа движения выполняется запись в whtransactions и корректируется onhand в whitems... При откате - обратные действия. На onhand - соответствущие ограничения, которые отменяют транзакции в случае, допустим, красного остатка. Текущее состояние склада (наиболее приоритетный запрос) - select * from whitems Остатки на прошлую дату вычисляются по whtransactions. Если вдруг и случается сбой, то onhand элементарно пересчитывается по транзакциям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 16:57 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
iscrafmПри учете(posting) документа движения выполняется запись в whtransactions и корректируется onhand в whitems... При откате - обратные действия. На onhand - соответствущие ограничения, которые отменяют транзакции в случае, допустим, красного остатка. Текущее состояние склада (наиболее приоритетный запрос) - select * from whitems Остатки на прошлую дату вычисляются по whtransactions. Если вдруг и случается сбой, то onhand элементарно пересчитывается по транзакциям.Еще раз - вычислить можно, но сколько это времени займет? Если нет возможности хранить транзакции-что делать? Вот нет и все? Организация не готова апгрейдить сервер каждый год только из-за того, что для корректной работы базы нужно хранить все больше и больше данных. Хотя "текущие объемы" не растут - как продавали 5 телевизоров в день, так и продают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 17:29 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
2 iscrafm А вы думаете приведенные цифры операций для складов невероятны? Я не автоматизировал по настоящему крупные склады; но, разглядывая полки МЕТРО, приходит в голову, что у них количество товарарных позиций и обьемы операций как бы даже ни больше. автор...Остатки на прошлую дату вычисляются по whtransactions. Это вы обьяснили, как построена ваша схема. А речь как раз и идет о том, что при наличии миллионов записей в whtransactions, расчет остатков на любую (кроме текущей) дату будет вынужден перелопачивать эти миллионы. При этом схема не существенно проще предложенного хранения остатка на каждую дату движения. Nobody faults but mine... (LZ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 17:34 |
|
||
|
Остатки на любую дату
|
|||
|---|---|---|---|
|
#18+
aag2 iscrafm А вы думаете приведенные цифры операций для складов невероятны? нет, почему же. Вероятны. Типовой проект: около 30000 товарных позиций, 1.5 млн в год транзакций. aagЭто вы обьяснили, как построена ваша схема. А речь как раз и идет о том, что при наличии миллионов записей в whtransactions, расчет остатков на любую (кроме текущей) дату будет вынужден перелопачивать эти миллионы. При этом схема не существенно проще предложенного хранения остатка на каждую дату движения. это одна из схем. Но... Зачем вообще остаток именно на конкретно указанную дату. Вероятность такого запроса очень низкая. Зачем под него городить огород. Мы обычно храним еще агрегированную таблицу по периодам (см. рисунок). Оборотки по периодам очень востребованный запрос - под него и хранятся агрегированные данные. Остатки на сейчас - просто ежеминутный запрос. Под него и хранятся данные. А всякая экзотика типа остатков на 27 ноября 2003 года - вычисляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 18:28 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34127863&tid=1544901]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 451ms |

| 0 / 0 |
