- Отключить триггеры (перед этим желательно запомнить какие триггеры были в неактивном состоянии).
Выполнить delete from ac_entry.
Выполнить delete from inv_movement.
Выполнить delete from inv_balance.
Потом удалять данные из таблиц позиций документов (имена %LINE). Можно написать такой запрос: SELECT 'DELETE FROM ' || a.relationname || ';' FROM at_relations WHERE relationname like 'USR$%LINE', выполнить в IBExpert, скопировать в буфер результат и вставить в окно скрипта.
Выполнять многократно delete from inv_card c where not exists (select c1.id from inv_card с1 where c1.parent = c.id) пока все не удалится.
Выполнять многократно delete from gd_document, смотреть какие таблицы ругаются и удалять из них информацию. Повторять, пока не очистится gd_document.
Подключить отключенные триггеры.
execute block as declare variable stmt varchar(1024); declare variable dt integer; declare variable rn varchar(31); begin for select t.id, r.relationname from at_relations r join gd_documenttype t on t.linerelkey = r.id into :dt, :rn do begin stmt = 'delete from gd_document doc ' || ' where doc.documenttypekey = ' || :dt || ' and not (doc.parent is null) ' || ' and not (doc.id in (select documentkey ' || ' from ' || :rn || '))'; execute statement :stmt; end end