2009
20
апреля
Быстрое удаление документов 1С
апреля 20, 2009 | Комментариев: 12
- «
- 1
- »
Иногда необходимо быстро удалить большое количество документов.
Например быстрое удаление может понадобится когда необходимо провести свертку базы данных задним числом. Например база ведется с 2005 года, а нам необходимо произвести свертку на 1 января 2009 года, чтобы все документы до 1 января 2009 года были удалены, а после 1 января 2009 года остались в базе.
В принципе удаление документов можно произвести программой в 5 строк:
Процедура Сформировать()
Д = СоздатьОбъект(«Документ»);
Д.ВыбратьДокументы(НачДата,КонДата);
Пока Д.ПолучитьДокумент() = 1 Цикл
Сообщить(Д.ТекущийДокумент());
Состояние(Д.ДатаДок);
Д.Удалить();
КонецЦикла;
КонецПроцедуры
Но дело в том, что при таком удалении каждый документ будет удаляться долго, потому что в начале он быдет «распроведен», сделан не проведенным, а потом только документ будет удален. Если необходимо удалить очень много документов, то только лишь процедура удаления может занять очень продолжительное время. Как же быть в данном случае?
Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru
Выход прост.
В DBF ной базе нам достаточно удалить файлы регистров, по которым проводятся документы. Движения по регистрам в 1С хранятся в файлах начинающихся на rg и ra. То есть это файлы rg*.* ra*.*.
Эти файлы можно удалить вручную, а можно и c помощью DOS командой каталога информационной базы. Только естественно делайте это на копии информационной базы.
del rg*.*
del ra*.*
После удаления этих файлов необходимо зайти в 1С монопольно (можно даже не переиндексировать) и запустить обработку на уделение документов.
Процедура Сформировать()
Д = СоздатьОбъект(«Документ»);
Д.ВыбратьДокументы(НачДата,КонДата);
Пока Д.ПолучитьДокумент() = 1 Цикл
Сообщить(Д.ТекущийДокумент());
Состояние(Д.ДатаДок);
Д.Удалить();
КонецЦикла;
КонецПроцедуры
Если удалены файлы регистров, то обработка удаления сработает в разы быстрее, так как не придется удалять движения по регистрам.
Единственный минус этого способа – это то, что необходимо будет перепровести ВСЕ неудаленные документы.
Страницы статьи:- «
- 1
- »
| В Мой Мир | В FaceBook |
Автор статьи admin апреля 20, 2009

февраля 24, 2010 at 15:08
Для SQL – это тольк остредствами SQL )))
А имена объектов (таблиц) у всех разные.
февраля 24, 2010 at 15:05
Если тупо удалять в базе будет анархия! Лучше медленно но верно удалять!
Может у кого есть вариант написанный для SQL, выкладывайте если не жалко!