- Отключить триггеры (перед этим желательно запомнить какие триггеры были в неактивном состоянии).
 
Выполнить 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



