Имя: Пароль:
1C
1C 7.7
v7: Как почистить базу от пустых движений по регистрам...
0 Джордж1
 
25.03.12
20:45
Комплексная. Переделанная. В результате ошибки в модуле проведения - при проведении документа Реализация создавалось много пустых движений регистров. В результате распухли таблицы - ПартииНаличие (движения) и Продажи.
Как лучше исправить ситуацию?
1 Джордж1
 
25.03.12
20:45
Перепроведение делать очень не хотелось бы
2 ДенисЧ
 
25.03.12
20:49
Что есть "пустое движение"?
3 Джордж1
 
25.03.12
20:52
(2)Запись в регистре с нулевыми значениями ресурсов
4 aka AMIGO
 
25.03.12
20:55
(3)судя по последнему сообщению, остатки не затронуты, потому можно написать обработку для выборки доков с пустыми значениями, их перепровести
5 aka AMIGO
 
25.03.12
20:56
вроде раньше в СП писали, что двигают регистры только документы..
но я мог слегка отстать от прогресса :)
6 Джордж1
 
25.03.12
20:57
(4)это косяк во всех документах - несколько десятков пустых записей, и одна, две с нормальными
документов относительно немного, но не хотелось бы что бы поехала себестоимость
7 acsent
 
25.03.12
20:57
удалить записи напрямую
8 Джордж1
 
25.03.12
20:57
(5)ну бухпроводки можно поправить без перепроведения документов
9 Джордж1
 
25.03.12
20:57
(7)и как это сделать?
10 aka AMIGO
 
25.03.12
20:59
(8)насколько я помню, в комплексной нет счетов.. там регистры.. 8 лет прошло, как я в последний раз видел комплексную.
11 aka AMIGO
 
25.03.12
21:00
(9) - открыть дбф файл в дбф-вьюере и удалить, не забыв проиндексировать
12 Джордж1
 
25.03.12
21:00
(10)счета там тоже есть. На то она и комплексная
13 acsent
 
25.03.12
21:08
delete from rg*** where xxx=0
14 Warlock
 
25.03.12
21:08
Можно временно добавить в код проведения что-то типа:

Если <Технологическое проведение (константа, имя пользователя...)> Тогда
   Считать движения документа
   Удалить пустые движения
   Записать движения
   Прервать стандартное проведение
КонецЕсли
15 Джордж1
 
25.03.12
21:10
(13)а где такое писать? на ум приходит только foxpro
16 NS
 
25.03.12
21:15
1С, Xbase, отлично работает с дбф-ами, как ни странно.
17 Джордж1
 
25.03.12
21:16
(16)4 млн. записей обработать сможет? перебором придется действовать?
18 NS
 
25.03.12
21:18
(17) Сможет. Очень быстро работает.
19 Джордж1
 
25.03.12
21:20
(18)О... спасибо.
А удаление таких пустых записей нигде потом не всплывет?
20 NS
 
25.03.12
22:33
(19) Нет, нигде не всплывет. Если действительно движения пустые и ни на что не влияют.
Не забудь после этого упаковать, переиндексировать и пересчитать итоги.
21 Ёпрст
 
26.03.12
08:57
(0)
Процедура Сформировать()
   Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Exclusive=Yes;Mode=ReadWrite;Collating Sequence=MACHINE";
   ДБ = СоздатьОбъект("OLEDBData");
   Рез = ДБ.Соединение(Соединение);
   Запрос = ДБ.СоздатьКоманду();
   Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')");  
   Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')");    
   Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')");// Отключили блокировки
   Запрос = ДБ.СоздатьКоманду();
   Имя = ИмяРегистра.ПолучитьЗначение(ИмяРегистра.ТекущаяСтрока());
   стр ="
   |DELETE
   |FROM $Регистр."+Имя+"
   |WHERE ";
   т="";
   Для к= 1 По Метаданные.Регистр(Имя).Ресурс() Цикл
       ИмяРесурса = Метаданные.Регистр(Имя).Ресурс(к);
       т=т+"
       |$РегистрИтоги."+Имя+"."+ИмяРесурса+" =0 and
       |";
   КонецЦикла;
   т=т+"1=1";
   стр=стр+т;
   Запрос.ВыполнитьИнструкцию(стр);
КонецПроцедуры
22 NS
 
27.03.12
17:36
(21) только будет ли это быстрее чем перебор средствами Xbase, который и так отработает за секунду.
23 Джордж1
 
27.03.12
17:38
(21)спасибо. у меня все штатными средствами 1C получилось.
//
А вот вопрос интересный. Почему в файле остатков регистра тоже попададаются "нулевые" записи.
И надо ли их чистить ручками, или пересчет итогов удалит такие записи?
24 Ёпрст
 
27.03.12
19:18
(22) для этого нужно иметь стороннюю базу, скорость не замерял, но фокс шустро это делает
(23) пересчет итогов не удалит эти записи, удалит только выгрузка-загрузка (ибо там тупо итогов нет в выгрузке, они сами потом пересчитываются с нуля)

Или, прямым запросом убрать их.

А возникают они от правки "в заднем числе" или от свертки базы, когда массово удаляются документы.
25 NS
 
27.03.12
19:24
(24) не нужна. Слелал копию дбфа, и обработал.
26 Ёпрст
 
28.03.12
10:13
(25) можно и так, кто к чему привык..
27 Джордж1
 
28.03.12
10:19
(24)После пересчета итогов и файл с остатками регистра стал меньше.
Пока работаем, пользователи похоже ничего и не заметили

фалы уменьшились с 500+800 Мб до 10+14 Мб
AdBlock убивает бесплатный контент. 1Сергей