Прошу помочь:
Нужен LOTик удаляющий накладные на отпуск, связанные с ними ордера, СФ, книгу продаж и хозоперации к ним.
Может что-то и забыл?
Заранее благодарю.
LOTик удаляющий накладные на отпуск и т.д.
Модераторы: m0p3e, edward_K, Модераторы
-
- Посетитель
- Сообщения: 43
- Зарегистрирован: 18 мар 2015, 13:35
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: LOTик удаляющий накладные на отпуск и т.д.
ага..еще навреное spdocnal
лот-скриптами будет муторно это. Изучайте возможности sql delete - оператора прямого sql
лот-скриптами будет муторно это. Изучайте возможности sql delete - оператора прямого sql
Re: LOTик удаляющий накладные на отпуск и т.д.
SALDOMC тоже, наверное...
По-моему, лучше разные *.vih для удаления использовать, иначе есть риск оставить "мусор" в базе.
По-моему, лучше разные *.vih для удаления использовать, иначе есть риск оставить "мусор" в базе.
-
- Посетитель
- Сообщения: 43
- Зарегистрирован: 18 мар 2015, 13:35
Re: LOTик удаляющий накладные на отпуск и т.д.
Пришли вот такие мысли:
Может кто из профи поправит ?
Заранее благодарю.
Код: Выделить всё
delete spsopr where vidsopr=201; delete katsopr where vidsopr=201;
delete soprhoz where ((soprhoz.csoprdoc==katsopr.nrec and 201==soprhoz.tipdoc and 0==soprhoz.sysoper)) and not isvalidall(tnkatsopr);
delete schfact where ((schfact.nrec==katsopr.cschfact)) and not isvalidall(tnkatsopr); delete spschf where ((spschf.CSCHFACT==schfact.nrec)) and not isvalidall(tnschfact); delete bookprzk where ((bookprzk.CSCHFACT==SCHFACT.nrec)) and bookprzk.direct=1 and not isvalidall(tnschfact);
delete bookprzk where ((bookprzk.CSCHFACTS==SCHFACT.nrec)) and bookprzk.direct=1 and not isvalidall(tnschfact);
Заранее благодарю.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: LOTик удаляющий накладные на отпуск и т.д.
По самому написанию - усе что можно было перепутали.
delete spsopr where (( 201 == vidsopr));
delete katsopr where (( 201 == vidsopr));
не понятно зачем тут katsopr? 201==soprhoz.tipdoc хватит, но еще нужно грохать soprhoz по СФ + spsophoz
delete soprhoz where ((soprhoz.csoprdoc==katsopr.nrec and 201==soprhoz.tipdoc and 0==soprhoz.sysoper)) and not isvalidall(tnkatsopr);
Работать буде пятилетку. Удалит заодно все СФ по платежам.
delete schfact where ((schfact.nrec==katsopr.cschfact)) and not isvalidall(tnkatsopr);
Работать буде пятилетку.
delete spschf where ((spschf.CSCHFACT==schfact.nrec)) and not isvalidall(tnschfact); delete bookprzk where ((bookprzk.CSCHFACT==SCHFACT.nrec)) and bookprzk.direct=1 and not isvalidall(tnschfact);
Ну может быть - но долго
delete bookprzk where ((bookprzk.CSCHFACTS==SCHFACT.nrec)) and bookprzk.direct=1 and not isvalidall(tnschfact);
Я обычно делаю наоборот.
Сначала генерю выборки по удалению сопроводиловки
select 'delete spsopr where (('+spsopr.nrec+' == nrec ));' ...
to txt ...201_del_spsopr.txt
#include ...201_del_spsopr.txt
....
А потом уже грохаю основную таблицу - часто точно также - медленно, зато надежно. Вообще не проще из галки пометить все и удалить? Где то была настройка разрешающая групповое удаление. Вы забыли еще с 10 - создайте одно накладную и проделайте по ней все операции и посмотрите по журналу.
delete spsopr where (( 201 == vidsopr));
delete katsopr where (( 201 == vidsopr));
не понятно зачем тут katsopr? 201==soprhoz.tipdoc хватит, но еще нужно грохать soprhoz по СФ + spsophoz
delete soprhoz where ((soprhoz.csoprdoc==katsopr.nrec and 201==soprhoz.tipdoc and 0==soprhoz.sysoper)) and not isvalidall(tnkatsopr);
Работать буде пятилетку. Удалит заодно все СФ по платежам.
delete schfact where ((schfact.nrec==katsopr.cschfact)) and not isvalidall(tnkatsopr);
Работать буде пятилетку.
delete spschf where ((spschf.CSCHFACT==schfact.nrec)) and not isvalidall(tnschfact); delete bookprzk where ((bookprzk.CSCHFACT==SCHFACT.nrec)) and bookprzk.direct=1 and not isvalidall(tnschfact);
Ну может быть - но долго
delete bookprzk where ((bookprzk.CSCHFACTS==SCHFACT.nrec)) and bookprzk.direct=1 and not isvalidall(tnschfact);
Я обычно делаю наоборот.
Сначала генерю выборки по удалению сопроводиловки
select 'delete spsopr where (('+spsopr.nrec+' == nrec ));' ...
to txt ...201_del_spsopr.txt
#include ...201_del_spsopr.txt
....
А потом уже грохаю основную таблицу - часто точно также - медленно, зато надежно. Вообще не проще из галки пометить все и удалить? Где то была настройка разрешающая групповое удаление. Вы забыли еще с 10 - создайте одно накладную и проделайте по ней все операции и посмотрите по журналу.
-
- Посетитель
- Сообщения: 43
- Зарегистрирован: 18 мар 2015, 13:35
Re: LOTик удаляющий накладные на отпуск и т.д.
Благодарю.
"Настройки Галактики \ Логистика \ Документы \ Контроль удаления и модификации \ Разрешать групповое удаление документов" в принципе решила проблему.
Успехов!
"Настройки Галактики \ Логистика \ Документы \ Контроль удаления и модификации \ Разрешать групповое удаление документов" в принципе решила проблему.
Успехов!