Имя: Пароль:
1C
1C 7.7
v7: Как удалить документы из базы
, ,
0 johnnik
 
06.04.12
21:49
Есть типовая конфигурация торговли (с незначительными изменениями, не затрагивающими структуру документов, журналов или регистров). Формат DBF. Нужно из нее удалить ВСЕ документы, а справочники и т.п. объекты - оставить. Встроенной групповой обработкой получается слишком долго, 15-20% документов обработка пометила за полсуток.
Есть ли способ как-то сразу разом все документы убрать. Удалить какой-нибудь файл .dbf, отвечающий за документы или очистить редактором .dbf или еще что-нибудь в этом роде. Вобщем, что-то более быстрое, чем сначала тысячи доков помечать на удаление штатными средствами.

P.S. Если написать обработку по непосредственому удалению, она будет все равно работать также медленно?
1 Guk
 
06.04.12
21:51
ТА двигал или так удалял?...
2 opty
 
06.04.12
21:52
Откатить ТА
3 opty
 
06.04.12
21:52
Или можно создать новую пустую базу и перенести туда справочники
4 Guk
 
06.04.12
21:53
а dbf не трогай. в лучшем случае похеришь периодику, изменяемую документами, в худшем - вообще всю базу пофиксишь...
5 opty
 
06.04.12
21:58
Не помню использует ли типовая обработка удаления в ТиС , транзакции , вроде нет , тогда можно минимально дописать , что бы помечала пачкой по несколько сот документов , прирост скорости можно получить приличный
6 v4442
 
06.04.12
22:06
Удали dbf файлы документов и регистров, dhxxx, dtxxx, rgxxx, raxxx, потом в конфиграторе делаешь какое нибудь изменение , сохраняешь(чтоб  создались файлы. Затем тестирование( с галочкой упаковка ) и готово.
7 andrewks
 
06.04.12
22:54
1. Скопировать в новую папку таблицы:
  1SUSERS 1SSYSTEM 1SCONST 1SUIDCTL 1SBLOB
  Все таблицы справочников, кроме  ненужных (например, в ТиС это Партии, названия файлов можно узнать в DD-файле), 1Cv7.md, 1Cv7.dd, папку USRDEF
2. Выполнить тестир. и испр. БД (с очисткой неверных ссылок)
3. (опционально) для очистки ненужной периодики (например, в ценах) убрать галку периодичности у нужных реквизитов, сохранить. затем опять поставить. сохранить.
4. выгрузка-загрузка
8 Злой Бобр
 
06.04.12
22:55
(0) В (6) ответ дан. Вот только если нужна история в справочниках - сначала стандартно перезаписать историю.
9 Alize
 
06.04.12
23:28
(7)ему удалить(1) все!документы
тан код
на 8 строк.
10 Alize
 
06.04.12
23:28
(7)ему удалить(1) все!документы
там код
на 8 строк.
11 andrewks
 
06.04.12
23:30
(10) писатель, да?
12 Alize
 
06.04.12
23:35
(11)Читай,удалить документы(0)!чукча:-)
13 andrewks
 
06.04.12
23:36
(12) давно болеем?
16 zxcvb
 
06.04.12
23:44
(13) Она здорова, не видно чтоле... Просто глуповата.
17 ТакВотЖе
 
06.04.12
23:49
зато красивая)
18 zxcvb
 
07.04.12
00:00
(17) Ага, тебе конечно виднее... По теории и дети будут красивые. Как у Чапека в рассказе...
19 AlexNew
 
07.04.12
00:05
(17- 18) Что вы разошлись, медики?
20 Эльниньо
 
07.04.12
10:34
На днях 800 000 доков удалил за 2 часа.
1. ТА на 1-й док.
2. удаляем с конца транзакциями по 100 доков

Не знаю - повлияло или нет:
прямым запросом собрал доки в список и удалял по списку в обратной хронологии
21 aka AMIGO
 
07.04.12
10:42
Док.СделатьНеПроведенным();
Док.Удалить(1);
22 Mikeware
 
07.04.12
10:59
(17)(18)
– Дура ты!
– Зато красивая.
– Кто тебе сказал?
– Ты!
– И ты поверила?
– Конечно!
– Ну и дура!
– Зато красивая!
...
©
23 Скользящий
 
07.04.12
11:12
http://lada-it.ru/index.php/-1/56-del.html
Третий способ. Только надо обязательно после удаления дбфок сделать ТиИ и выгрузку загрузку.
24 aka AMIGO
 
07.04.12
11:14
Вернее, так:
Док.СоздатьОбъект("Документ");
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент()=1 Цикл
Док.СделатьНеПроведенным();
Док.Удалить(1);
КонецЦикла;
25 vde69
 
07.04.12
11:17
удалить файл джорнал, сделать тестирование в режиме удаления крывых ссылок.

минут 20 уйдет
26 opty
 
07.04.12
11:31
(200) Ага , точно так же делаю , только транзакция на 500 доков , около миллиона доков за 3.5 часа , база скулевая
27 opty
 
07.04.12
11:31
(200)---> (20)
28 Mikeware
 
07.04.12
11:34
(26) Сделал бы прямым запросом, и не парился.
29 opty
 
07.04.12
11:56
(28) Выбираю прямым , а удаляю средствами платформы , как то я настороженно к прямому удалению файлов (если DBF) и записей отношусь .
Здоровый консерватизм , а может и не здоровый :)
Но лучше час потерять , хотя если бы удаление занимало как у ТС 20% за пол суток то ...
А так и штатными средствами можно достаточно быстро сделать , ну или почти штатными :)
30 opty
 
07.04.12
11:59
+(29) Причем я не полностью базу очищаю от доков а сворачиваю , доки удаляются за период , причем в периоде удаляются не все а 99.99 % кое какие надо оставить
31 Mikeware
 
07.04.12
12:02
32 opty
 
07.04.12
12:08
(31) Согласен , так еще быстрей , но и штатными средствами можно сделать ДОСТАТОЧНО быстро
Вот если бы штатными удаление занимало многие часы или десятки часов ...
33 Mikeware
 
07.04.12
12:10
(32) основной плюс - не скорость, а работа в разделенном режиме...
34 opty
 
07.04.12
12:18
(33) И штатными можно в разделенном режиме (теоретически)
Можно удалять непосредственно , с проверкой ссылочной целостности на стадии выборки прямым запросом , или использовать НайтиСылки , предварительно пометив а потом удалять (но так медленно)
На практике же даже при работе 24/7 под ежегодную свертку несколько часов монопольки всегда можно выделить , не несколько же суток :)
35 GreyK
 
07.04.12
12:27
(0) Создать пустую базу и перенести справочники и константы не прдлогать?
36 opty
 
07.04.12
12:44
(35) Предлагали ужо :)
37 Mikeware
 
07.04.12
12:57
(34) Штатными средствами - будет очень долго, и сильно мешать работе.
на практике - у меня база всегда держится за 37 месяцев, обрезается автоматически, без всяких выделений времени.
38 opty
 
07.04.12
13:19
(34) Через НайтиСсылки да , очень долго , при непосредственном удалении с предварительным контролем целостности намного быстрее

То есть ты её режешь часто (ежемесячно или может даже чаще) , постоянно сохраняя глубину 3 года + месяц ?
Если так то пакет удаления (количество удаляемых доков) у тебя относительно не большой , а вообще подход интересный . При такой большой глубине давности удаляемых документов риски неправильного расчета конечных остатков практически нулевые даже в разделенном режиме .

Я режу раз в год , база максимом 15 месяцев к тому времени , зато сразу за 12 месяцев чикаю , перед сверкой база реплицируется в "прошлогоднюю" доступную для просмотра и анализа . На практике в актуальной рабочей базе очень редко нужны данные глубиной более года , нефиг их там хранить и копить

В общем способ удаления зависит в конце концов от целей и общего порядка работы с базой :)
39 Mikeware
 
07.04.12
14:50
(38) Ежемесячно. И если быть точным, не я ее режу, а она сама режется :-))
40 Эльниньо
 
07.04.12
14:58
1С-Саморез
41 opty
 
07.04.12
15:07
(39) А если скажем потребовались данные пятилетей давности то как ? Бекап поднимаешь ?
Понятно что такое редко нужно , но бывает
42 johnnik
 
07.04.12
18:44
Всем огромное спасибо за идеи и предложения. Предложение №6 оказалось самым быстрым, удобным и требующим минимальное количество нажатий :) И, главное, своевременным.

v4442 - респект.
43 Mikeware
 
07.04.12
20:18
(41) а для этого есть база - "только получатель", и в ней данные с 2005 года.
И доступ к ней только у фиников, остальные через обращение к ним (лениво делать "только просмотр")
"я давно играю"© :-)
44 wsxedc83
 
30.04.12
21:34
(43) Реплицируешь средствами скуля? Или база дбф?
46 Mikeware
 
01.05.12
09:31
(44) Обычная периферийка, одна из...
а насчет "база дбф" - я с мелкими базенками не работаю :-), у меня сиквельные
Основная теорема систематики: Новые системы плодят новые проблемы.