Пересчет остатков в базе данных

Данная функция производит ревизию остатков товаров на складах в общем и в отдельности, в картотеке, производит некоторые проверки и исправляет некоторые логические ошибки в базах данных в случае их существования. Данная процедура полезна вообще, так как она устраняет некоторые логические ошибки в базе автоматически, а также исправляет остатки в программе (по номенклатуре в общем, по номенклатуре по складам, по карточкам). При загрузки программа проверяет, когда был в последний раз сделан пересчет остатков, и если это было давно, то предложит сделать это прямо сейчас. пересчет остатков

Текущие остатки товаров ведутся в нескольких контекстах:

Иногда остаток может быть некорректен (вследствии ошибок при изменении остатков, некорректного завершения работы). В этом случае необходимо произвести пересчет остатков. При довольно больших базах данных он может затянуться на несколько минут, однако пересчет остатков не ограничивает продолжение работы в локальной сети.

Пересчет остатков проходит в несколько этапов. Запуск производится кнопкой "пересчитать", после чего кнопки ставятся недоступны. Пересчет можно считать оконченным, когда кнопки снова станут доступны.

Если программа во время пересчета остатков встречает продажи, в которых не указана карточка, с которой товар продан, то производится попытка найти первую (или самую дешевую, или самую дорогую, в зависимости от настроек программы) непроданную карточку по данному номенклатурному коду, и товар закрепляется за данной карточкой в заданном количестве. Если удается списать с одной карточки, то продажа данного товара разбивается на несколько строки с указанием подходящего количества в них для каждой карточки отдельно. Если не удается найти свободных (непроданных) карточек, то товары остаются непроданными (отрицательные остатки по номенклатурному справочнику в одном отдельно взятом складе), и программа сообщает об этом оператору. Смотрите отрицательные остатки!