gifts2017

DBFScruber или чистильщик DBF

Опубликовал Павел Проскурин (proskurin) в раздел Администрирование - Чистка базы

Программа предназначена для быстрого удаления документов и служебной информации при свертках. Гарантированное время чистки на базе 2 Гб. 2 часа. Пишет лог. Настройки в виде ini файла. Работает с DBF на стандартных ODBC драйверах.
Вопросы о свертке баз поднимаются периодически с завидной регулярностью, оно и понятно - "пока петух не клюнет".... Казалось бы, все вопросы изучены и поданы на блюдечке, например, в часто цитируемой статье "Методика быстрого сворачивания периода на больших базах V7" 2002 © Шемякина Павла. Однако не все так просто...
Собственно, в 2004 году именно благодаря этой статье и появилась программка. Конечно, никаких претензий на оригинальность и любой программист сможет написать подобное за пару часов, однако, вот только не видно таких решений в свободном доступе....
Постановка задачи в нашем случае не отличается от стандартной. База большая, документов много - пора резать.
Вот с этого момента начинаем выяснять поподробнее. Что хотят пользователи? А они хотят, чтобы документы типа "Договора", "Приказы" и т.п. не удалялись из базы, а были доступны за весь период работы. Так делаем пометочку. Еще они хотят завтра уже работать в новой "облегченной базе". Еще пометочка.
Что в этом случае делает программист 1С? Как обычно, наступает на грабли - пытается удалить т.н. "стандартными средствами". Только заметим, что дело происходит, скажем, где то в марте-апреле. А свернуть предполагается до 1 января текущего года, чтобы сохранить историю неоплаченных накладных и т.п.. А при этом размер базы около 2 Гб.
Обычно такие операции справедливо приурочивают к вечеру субботы, чтобы оставить время для сверки и .т.п. Вот только что же может увидеть программист, придя утром на работу? А то, что оставленная на ночь база благополучно вывалилась с малопонятной ошибкой о "нехватке какой-то там памяти". Печально, но приходится начинать все сначала, теперь под постоянным контролем. Однако через 3-4 часа наблюдаем ту же картину - с той же, а возможно еще какой-то малопонятной ошибкой 1С вываливается при удалении документов. Самое время искать альтернативные пути... вот только уже поздний вечер воскресенья и нет времени на придумывания и извращения...
Собственно, тут я и хотел бы предложить такой вариант, как использование ODBC драйверов сугубо для проведения чистки.
Последовательность действий:
1. Скачать программу
2. Создать ODBC соединение (указать, например, dBASE Driver и путь к базе)
Это сделано для удобства, чтобы не привязывать программу к конкретному драйверу, вы сами выбираете нужный, а в параметрах просто указываете DSN имя подключения.
3.В ini файле прописать дату, до которой удалять документы, регистры и служебную информацию. Указать DSN имя подключения.
4. Запускаете программу DBFScruber .
5. Жмем кнопочку Анализ, если соединение указано правильно, то слева появится список документов, отмечаете документы, которые хотите проигнорировать (не чистить). Кстати чуть ниже надо отметить служебные таблицы, которые тоже хотите оставить нетронутыми, иначе они будут очищены на указанную дату.
6. Делаете резервную копию базы.
7. Переносим остатки на утро указанной даты.
8. Жмем кнопочку "Чистка"
9. Делаем тестирование и исправление, с удалением и упаковку базы.
10. На всякий случай, перепроводим те документы, которые мы не чистили.
11. Проводим документы остатков задним числом.
12. Выполняем сверку.
Собственно все.
На все операции включая, сверку, у меня ушло 5 часов, а у вас?

Скачать файлы

Наименование Файл Версия Размер
DbfScruber.zip 386
.zip 46,76Kb
25.09.09
386
.zip 46,76Kb Бесплатно
Исходники 168
.1191436665 64,74Kb
25.09.09
168
.1191436665 64,74Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. DimRon 26.05.06 11:14
Скажите пожалуйста как создать ODBC соединение и где прописать путь к базе? Извиняюсь за ламерский вопрос, но яне понял.
2. Proskurin (proskurin) 26.05.06 12:24
Пуск - Администрирование - Источники данных ODBC
Там вкладка "Пользовательский DSN" жмем добавить, выбираем драйвер (dBASE Driver ). Затем выбираем каталог (указать каталог с базой данных), задаем название, например, "DbfScruber", версия таблиц - 5.0.
Дальше все должно заработать, только не забудьте указать правильную дату в ini файле.
3. DimRon 26.05.06 13:48
Не заработало. Выдал ошибку: [Microsoft][Драйвер ODBC dBase] Индекс не найден.
4. Proskurin (proskurin) 26.05.06 20:55
Довольно странно, индексы для удаления вообще не используются. Кроме указания каталога и названия, ничего менять не надо, хотя там, в настройках ODBC, и есть возможность выбрать индексы, их не нужно указывать, поскольку все-таки у 1С формат немного другой (Fox).
5. Proskurin (proskurin) 28.05.06 20:52
Кто-то пробовал уже? Поделитесь удачными свертками...
6. Proskurin (proskurin) 30.05.06 08:38
В идеале, конечно, надо использовать Microsoft Visual Foxpro ODBC Driver, хотя, повторяю, ODBC dBase, тоже будет работать. Если что-то не работает - ковыряйте свой ODBC, для этого и сделано разделение. Программка просто выполняет нужные запросы.
7. val 06.06.06 16:50
"Обработка структуры 1Cv7.dd" останавливается на 1% или 11% и ошибка:
[Microsoft][Драйвер ODBC dBase] Индекс не найден.
8. Proskurin (proskurin) 06.06.06 18:09
Пишите, пожалуйста, на адрес sbs@sbs.com.ua. Мне необходимо повторить ситацию, для этого надо знать:
1. Версию драйвера
2. Операционная система
3. Появляются ли документы после анализа dd файла?

Все было проверено мной на W2k3 / W2000 / Win XP без SP -
работает четко.
9. Proskurin (proskurin) 06.06.06 18:42
Только что проверил на лицензионной Win XP SP2 со всеми последними обновлениями, чем черт не шутит :-)
Все работает четко.
10. Denton 16.06.06 09:40
После нажатия кнопки Анализ, пишет ошибку "Обработка структуры 1Cv7.dd" 2%", и сообщение об ошибке "Run-time error '-2147217900 (80040e14)': [Microsoft][Драйвер ODBC dBase] Индекс не найден.". Я уже по всякому перепробовал настраивать драйвер и все равно одна и таже ошибка. (Windows XP Pro SP2, 1C v7.7.008, размер базы 1,7Гб., драйвер Microsoft dBase Driver (*.dbf))
11. Denton 16.06.06 11:24
Автор .., а вы не могли бы пояснить, работает ли ваша программа с Регистровыми базами ??? .. я так догадываюсь, что ваша программа только для бухгалтерского учета.
12. Proskurin (proskurin) 16.06.06 22:53
Работает с регистрами тоже.
Почему не работает в вашем случае не могу сказать.
Попробуйте другие драйверы, которые понимают dbf.
Возможно, что-то с ADO или MDAC...
13. Denton 21.06.06 11:25
Если я не ошибаюсь ADO и MDAC .. это не дрова ...а архитектуры доступа к БД.
14. Роман 27.06.06 12:05
почему-то удалилось все содержимое документов, а сами документы остались. что делать ??
15. Proskurin (proskurin) 27.06.06 22:53
Видимо, повторить. Для начала. Скорее всего, не закончилась очистка 1SJOURN.DBF.
16. Denton 29.06.06 11:50
Автор, вы мне ответите что нибудь по моему вопросу или как ??? Еже ли дело только с драйверами доступа к БД, то посоветуйте где их можно взять !!!
17. Proskurin (proskurin) 30.06.06 22:23
Для Denton. К сожалению, поскольку у меня никогда не возникала описанная ситуация, я не искал пути ее решения. Если Вам удасться решить вашу проблему - напишите сюда. Могу так же выложить исходные коды на VB, кому интересно.
18. Denton 06.07.06 10:27
В VB я не силен и проблему не смог решить, но было бы очень не плохо, если вы автор опубликуете подробную статью как работает ваша программа.
19. Rexx 04.08.06 12:02
Исходники где можно посмотреть? Вещь хоть и сама по себе несложная , но интресная с точки зрения обучения VB и 1С.
20. gunner_Hans Gunner (gunner_Hans) 12.09.06 19:19
Все живет, все работает. Автору сенкс и +1
21. Mihenius (mihenius) 14.09.07 13:44
Хотелось бы тоже самое, но только с пометкой на удаление, а не физическое удаление из таблиц
22. kairat primbetov (karat60) 01.10.07 11:35
23. Proskurin (proskurin) 03.10.07 22:41
Исходники выложил как есть, однако на комментарии не рассчитываем - давно это было
24. Дмитрий Ермаков (ERMAKoff) 03.12.08 15:54
Прошу прощения, а вот этот пункт каким образом можно выполнить? "7. Переносим остатки на утро указанной даты."
25. Сергей (warit) 02.04.09 13:53
Мне помогло решить проблему с индексами: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase]
"BDE"=dword:00000002
26. marina syerik (luckymarina) 02.09.09 15:22
У меня такой вопрос: я не могу перепровести те документы, которые остались после чистки, т.к. нет ничего на остатках. Может, нужно сразу провести документы с остатками??
27. marina syerik (luckymarina) 02.09.09 15:24
У меня такой вопрос: я не могу перепровести те документы, которые остались после чистки, т.к. нет ничего на остатках. Может, нужно сразу провести документы с остатками?? И еще: при тестировании проверять физическую/логическую целосность, производить пересчет итогов и служебной инфо, или только упаковку?
28. marina syerik (luckymarina) 11.09.09 17:29
С предыдущими вопросами разобралась. Только появилась новая проблема: база не проходит тест на логическую целосность. Как можно ее решить?
29. Forward Fader (Performer) 01.07.10 13:31
После обрезки базы "комплексная" сбилась нумерация, теперь новый созданный документ записывается номер 0000000001. Ну и так как этот номер уже существует ругается что номер не уникальный. Каждый раз поправлять номер тоже не айс. Может кто подскажет как исправить проблему?
30. vitaly (vitalyb) 03.10.11 15:54
хорошо справляется с поставленными задачами, мне очень сильно помогло при свертке базы :)
31. Андрей Андреев (AndreyBuka) 22.12.11 22:07
Пуск - Администрирование - Источники данных ODBC
Там вкладка "Пользовательский DSN" жмем добавить, выбираем драйвер (dBASE Driver ). Затем выбираем каталог (указать каталог с базой данных), задаем название, например, "DbfScruber", версия таблиц - 5.0.
Дальше все должно заработать, только не забудьте указать правильную дату в ini файле. при тестировании проверять физическую/логическую целосность, производить пересчет итогов и служебной инфо, или только упаковку?
32. Харьков Харьков (xaker1C) 23.12.11 05:17
Работает большое спасибо
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа