|
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 Мб |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |