ник: osmor
Регистр это таблица в которой хранятся агрегированные данные по какому либо параметру.
Например регистр остатков.
Устройстов регистра может быть разным:
например 1 строка содержит остаток конкретного товара на конкретную дату (не обязательно каждый день, можно на 1-е число месяца или на понедельник, а может быть и по часам в зависимочти от оборотов), в этом случае для одного товара в регистре будет много записей, на каждую дату (момент времени) свой остаток.
В этом случае остаток для нужной даты высчисляется следующим образом:
из регистра берется остаток на дату ближайшую к требуемой дате и добавляются (вычитаются) все операции прихода/расхода из журнала операций которые произошли в период от даты в регистре до требуемой даты.
Другой вариант регистра, 1 строка содержит остаток конкретного товара на текущий момент времени, т.е. в таблице-регистре для каждого товара всегда только одна запись.
В этом случае остаток есть только на сейчас, остатки на все другие даты вычисляется обратными операцииями из журнала операций.(т.е. приход вычитается, расход прибавляется)
Работать с регистрами можно по разному:
вариант 1 - процедура закрытия периода, это когда регистр рассчитывается в момент закрытия периода (длинна периода может быть любой в зависимости от желания) так реализовано в 1С. при таком варианте только операции проведенные "задним" числом приводят к пересчету регистров, даты в "открытом" периоде вводятся быстро без дополнительных рассчетов.
вариант 2 - рагистр рассчитывается сразу после проведения операции. в этом случае любая операция приводит к пересчету, но зато не нужно проводить "закрытие" периода.
Какой вариант выбрать, опять зависит от многих факторов и желаемых скоростей
Вариатн используемый Вами это вариант без регистров, когда остаток считается от момента начала ведения базы минусы очевидны, плюсы в том что не нужно следить за актуальностью регистров. В вашем случае таблицы остатков нет, есть только таблица операций.
Как я уже сказал, разделите остатки и ввод в разные формы, одна на запросе с группировкой который вычисляет остатки, другая форма на таблице с операциями.
Вообще на мой взгляд при вводе операции нужно показывать остаток только по товару учавствующему в операции, а это можно сделать с помощью Dsum, или DlookUp в зависимости от выбранной схемы.
Так же можно показать остаток по товару в поле со списком где выбирается название товара, при выборе товара сразу видет его остаток.
Существует вариант с временной таблицей (это тоже своего рода регистр, но не постоянный а создаваемый в нужный момент), но он мне кажется не слишком нужным, т.к. все равно данные в эту таблицу вносить бессмысленно, она же временная.
Остатки тема вообще очень итрересная если подключить сюда товары в пути, резервирование, полученные но не оприходоавнные товары, то могут появится так называемые "теневые обороты", т.е. операции которые уже произошли, но еще не могут быть внесены в остатки.
Ну хватит лекций с утра...