28. Обрезка базы данных StoreHouse

Программа DOCSKILL.EXE предназначена для удаления документов из складской БД. При этом из-за особенностей INTERBASE размер БД не уменьшается, поэтому после окончания работы данной программы можно сделать BACKUP/RETORE средствами INTERBASE (например, с помощью SERVER MANAGER) или перекачать оставшиеся данные в чистую БД с помощью программы UPGRADE. Программа может автоматически выполнить процедуру BACKUP/RETORE в процессе работы при условии указания пути к утилите GBAK.EXE. Поскольку коды возврата утилиты GBAK.EXE фирмой BORLAND не задокументированы, после окончания работы программы настоятельно рекомендуется просмотреть протокол, и осознать сообщения, выданные данной утилитой. Для работы необходим DDP.SQL, содержащий текст процедур удаления.

Для удаления:

1) укажите даты, по которые надо удалить данные (удаляется начиная с самого первого документа по указанные даты);

2) выберите, какие виды документов необходимо удалить;

Удалений кальк. карт осуществляется так: выбирается карта, действующая на дату, по которую удаляются документы, и все карты, действующие до нее, удаляются.

3) установить параметры;

- Создавать процедуры

Создает в БД Процедуры: создания остатков, удаления документов и кальк. карт. Если в БД уже есть эти процедуры, то будет выдана ошибка "INVALID MODIFY REQUEST, PROCEDURE XXX ALREADY EXISTS". Её можно игнорировать, нажав "ПРОПУСТИТЬ".

- Создавать входящие остатки

Автоматически создаст накладные-входящие остатки путем копирования ведомости остатков по каждому складу в отдельную накладную. Необходимо указать поставщика. Если накладные-входящие остатки уже созданы вручную, то этой возможностью пользоваться не надо, чтобы не задвоить остатки.

- Производить сборку мусора

Собирает мусор, образовавшийся в БД после удаления большого кол-ва данных. Данную процедуру можно заменить процедурой BACKUP/RESTORE средствами INTERBASE. Тогда после окончания работы программы BACKUP/RESTORE проводить не нужно.

- Активизировать входящие остатки

Ищет приходные накладные за заданную дату от указанного поставщика и делает их активными. Если входящие остатки создавались вручную и сохранялись сразу активными, то этой возможностью пользоваться не надо.

- Пересчитывать очереди FIFO

Пересчет документов, следующих за входящими остатками.

- Проверять документы

Проверка документов (как В SHCHECK). DOCKILL INFO

Еще раз про обрезание базы:

1. Обрезаем базу с помощью DOCKILL. Если в конце появилась ошибка SP_CHECKMAINDOCS (а не просто SP_MAINDOCS), игнорируем ее, исправим ошибки потом.

2. Перекачиваем в чистую базу без статистики (т.к. после обрезания старых документов статистика по ним все равно остается, то мы делаем перекачку сначала без статистики, а затем пересчет -таким образом избавляемся от лишнего мусора). Перекачка без статистики делается таким же образом, как и апгрейд, за исключением того, что в файле TRANSFER.TXT находим следующие строки:

{MOVE\ СТАТИСТИКА ПО ДОКУМЕНТАМ: OUTPTRS\ [300, 999]\ T\ OUTPTRS\\ NO_GEN\ }
{MOVE\ СТАТИСТИКА ПО ДОКУМЕНТАМ: REMNS\ [300, 999]\ T\ REMNS\\ NO_GEN\ }
{MOVE\ СТАТИСТИКА ПО ДОКУМЕНТАМ: REMNSA\ [300, 999]\ T\ REMNSA\\ NO_GEN\ }

и комментируем их или просто удаляем.

3. После перекачки без статистики запускаем SHCHECK.EXE, проверяем на ошибки и после окончания проверки и появления списка ошибок, нажимаем в любом месте окна правой кнопкой и выбираем пункт "ПЕРЕСЧИТАТЬ ВСЕ".

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

Восстановление базы может длиться очень долго - будьте терпеливы, не прерывайте процесс!