Показать сообщение отдельно
Старый 25.07.2012, 11:57   #45  
online
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Тоже возникла заинтересованность в удалении лишних InventDim.
Написал SQL - запрос, который может быть актуален для Аксапты, в которой ведутся продажи, закупки, складские журналы, журналы прибытия и отгрузки.
По моей базе из 6 млн аналитик неиспользуемых получается 50% - 3 млн.
Аналитика может присутствовать в строке заказа, но осутствовать в складских проводках и в InventSum, так как в результате работы резервирования аналитика в проводках меняется, а строках заказа нет.
Данный запрос я на боевой базе пока не запускал. Еще бы туда по идее надо добавить транспортировки палет и прочие журналы, в которых используется складская аналитика. И еще бы можно было добавить проверку на аналитику "Куда" в строках складского журнала, но я пока решил не проверять это, так как сохранение строк журналов переноса для нас неактуально
Проверка на использование аналитики в строках документов нужна для того, чтобы строки из аксаптовских форм не исчезли после удаления аналитики.
X++:
delete from INVENTDIM where 
not exists
(select RECID from InventSum where InventSum.DATAAREAID = InventDim.DATAAREAID and
InventSum.INVENTDIMID = InventDim.INVENTDIMID)
and not exists
(select RECID from InventTrans where InventTrans.DATAAREAID = InventDim.DATAAREAID and
InventTrans.INVENTDIMID = InventDim.INVENTDIMID)
and not exists
(select RECID from SalesLine where SalesLine.DATAAREAID = InventDim.DATAAREAID and
SalesLine.INVENTDIMID = InventDim.INVENTDIMID)
and not exists
(select RECID from PurchLine where PurchLine.DATAAREAID = InventDim.DATAAREAID and
PurchLine.INVENTDIMID = InventDim.INVENTDIMID)
and not exists
(select RECID from InventJournalTrans where InventJournalTrans.DATAAREAID = InventDim.DATAAREAID and
InventJournalTrans.INVENTDIMID = InventDim.INVENTDIMID
)
and not exists
(select RECID from WMSOrderTrans where WMSOrderTrans.DATAAREAID = InventDim.DATAAREAID and
WMSOrderTrans.INVENTDIMID = InventDim.INVENTDIMID)
and not exists
(select RECID from WMSJournalTrans where WMSJournalTrans.DATAAREAID = InventDim.DATAAREAID and
WMSJournalTrans.INVENTDIMID = InventDim.INVENTDIMID)

Последний раз редактировалось Ace of Database; 25.07.2012 в 12:01.