Учимся правильно организовывать учёт

Как избежать превращения программы учёта в генератор случайных чисел
 
Очень часто приложение на MS Access пишется для учёта чего-либо (денег или товаров). Казалось бы, всё просто -- как в школьной задаче: в одну труду втекает (приход/получение ценностей), в другую утекает (расход/выдача ценностей). Но чаще, чем хотелось бы, такая программа через год-полтора после старта начинает работать как генератор случайных чисел. Где же подводный камень?

Всё дело в том, что в школе, рассказывая про бассейн и две трубы, забыли рассказать, что они подтекают и засоряются.  Т.е. приходы и расходы могут реально произойти, но в программу не внестись (и наоборот). Причины невнесения реальной операции в программу достаточно очевидны -- неполадки компьютера/сети, похмелье, проверка -- "заметят или не заметят", несоответствие количества в упаковке реальному и т.п.
Менее очевидны причины вноса операции, в реальности не происходившей. Как правило, это внос операции  заранее. Получили по факсу перечень товаров, который к нам едет -- ну и вколотили его а базу, чтоб не делать это в спешке. Или представим, что нам согласились выдать деньги, и мы, чтоб курьеру распечатать приходник, вбили операцию. А с получением денег всегда могут возникнуть проблемы...

Кроме того, есть проблема чисто техническая. Чем больше операций, тем дольше приходится считать приход и расход.

Я предлагаю следующие решения:

1. Реализация операции ревизия. Вносится реальное количество с составлением документа. И при расчёте остатка разница прихода и расхода прибавится к количеству, зафиксированному в последней ревизии.

2. В расчёт остатка должны попадать только те операции, которые помечены как произведённые.


Страница сайта http://interface.ru
Оригинал находится по адресу http://interface.ru/home.asp?artId=8142