Методика быстрого удаления большого количества документов (для dbf-версии, компоненты: оперативный учет, бухучет).
Используемое ПО:
1.ODBC драйвер. Я использовал Microsoft Visual FoxPro Driver. http://msdn2.microsoft.com/ru-ru/vfoxpro/bb190232.aspx качаем Microsoft OLE DB Provider for Visual FoxPro 9.0 SP1
2.Обработка ClosePeriod.ert.
3.1CPP.dll – библиотека используется в обработке для получения внутренних идентификаторов регистров и организации циклов при удалении движений документов
и для прямого доступа к таблицам баз 1С:Предприятия 7.7 http://1cpp.ru/
Методика:
1.Переносим остатки на нужную дату (обычно последний день года 31.12.ХХХХ). Здесь вариантов может быть несколько. Подробности упускаю.
2.Удаляем все индексные файлы, а также файлы бухгалтерских итогов и итогов ОУ: 1SACCSEL.DBF, 1SBKTTL.DBF, 1SBKTTLC.DBF, 1SSBSEL.DBF, RG*.
3.В файле 1SJOURN.DBF устанавливаем в поле ISMARK пометку » * » и в поле » CLOSED» значение 4***. При этом Табличные части и шапки документов не трогаем.
Пусть удаляются при удалении помеченных объектов. Здесь же помечаем на удаление записи в файлах движений по регистрам RA* соответствующих документов,
а также В файле 1sentry помечаем на удаление проводки операции этих же документов (сами операции не трогаем).
Все это выполняется обработкой ClosePeriod.ert. В ней указывается полный путь к базе и дата, на которую перенесли остатки (обычно последний день года 31.12.ХХХХ).
Обработку нужно вызвать из копии базы, которая «режется». Примечание: Документы последнего дня не будут помечены на удаление. Об этом ниже.
4.Запускаем 1С-ку монопольно (индексы восстанавливаются). Проверяем визуально период, в котором документы пометились на удаление (на всякий случай).
Стандартными средствами, например ОбработкаДокументовСписком, помечаем на удаление все документы последнего дня закрываемого периода.
Кроме документов, которыми были перенесены остатки. Или другой вариант: открыть ClosePeriod.ert в той базе, которая режется и нажать на кнопку «УдалитьПоследнийДень».
5.Запускаем процедуру удаления помеченных объектов.
6.Запускаем конфигуратор, пакуем базу.
7.Выполняем процедуру «Тестирование и исправление ИБ» (проверку физической и логической целостности, реиндексацию). Если все нормально, идем дальше.
8.Выполняем процедуру «Тестирование и исправление ИБ» (Пересчет служебных данных, пересчет итогов).
*** значение 4 должно устанавливаться, если используется компонента Бухучет. Если используется Оперативный учет, нужно ставить «0»,
документы компоненты Расчет не помечаются на удаление. Это можно сделать прямо исправив текст модуля.
И еще: данная методика не претендует на статус абсолютно правильной, распространяется свободно, используется Вами на свой страх и риск.
Автор не несет ответственности за нанесенный ущерб, в процессе ее использования.
Большое спасибо Павлу Шемякину за идею, Алексею Емельянову за реализацию
А так же создателям 1С++
Статья находится: http://1csql.ru/materials/articles/develop.html~23fa4add-f5a0-d24c-3491-f68c6325ee34
Оригинальная обработка находится: http://1c.proclub.ru/modules/mydownloads/personal.php?cid=76&lid=5119
Я только изменил обработку под 1С++
Из минусов только 1. Требуется пересчет итогов и служебных данных.
Но уже в урезанной базе это будет идти достаточно быстро.
Если вы счастливый обладатель SQL базы, то для пересчета ТА рекомендую использовать:
1)http://metaprog.co.ua/secrprog/files/setTA.zip или
2)http://www.dev.citykirov.ru/dlcount.php?url=http://dev.citykirov.ru/APSetup.zip
Возможно раздел нужно выбрать чистка базы, но я считаю что это все относится к свертке.
Сейчас разбираюсь как сделать выборочную пометку на удаление
Рекомендую вначале проверить на демобазе
По умолчанию делается для ТиС-а для Бух надо поменять closed=0 на closed=4
Оч. понравился вариант изhttp://infostart.ru/projects/216/
но он только удаляет объекты, а в ТиС-е при непосредственном удалении документов поплывут книги продаж и покупок
Обнаружена ошибка в торговой базе нет файла 1sentry так что на торговых базах нужно закомментировать последний запрос
Разобрался как делается выборочная пометка на удаление
Скоро добавлю ) будет как в (4)
(5) отработай это в условии программно…
(5) и (7)
Показать полностью
(8) Да уже давно все сделано … просто я доделываю выборочную пометку.
Как доделаю все будет нормально.
Пока это так шаблон )
Обновление. Все готово.
http://www.1cpp.ru/forum/YaBB.pl?num=1189945890/15
Большое спасибо форумчанам
Обработка помечает на удаление все документы, кроме выбранных видов
Отладка для отладки переданных запросов
Вобще-то можно так не парится.
1. Переносиш остатки.
2. Устанавливаешь дату рассчета итогов до начала работы системы.
3. Транзакцией ПОМЕСЯЧНО (или набирая определенное кол-во документов) помечаешь на удаление (итоги не прересчитываются т.к. п.2)
4. Удаляешь помеченные на удаление.
5. Пакуешь базу в конфигураторе.
Главное правильно выбрать размер транзакции и то что без транзакции делпалось за 12 часов делается за 30-40 минут (база около 4Гб)
(11)
Честно вы меня рассмешили ))))))))))
Это знают даже молодые, плюс тут же есть 2 обработки делающие это.
А интересно сколько у тебя ТА будет возвращаться обратно если режешь большой период?
Если не резал большие базы лучше не давать советов ))))))))))))
Читай внимательно маны этой обработки. Обрати внимание!!!
И еще: данная методика не претендует на статус абсолютно правильной, распространяется свободно, используется Вами на свой страх и риск.
Сравнивай со стандартным решением. Делай замер 1) стандартная пометка с переносом ТА + перенос ТА на текущее чило
2) непосредственная пометка + пересчет Итогов
Смотри что делается быстрее и выбирай.
Если внимательно читал, то сама обработка сделана не мной, я только адаптировал.
и всегда нужен выбор.
А так обработка пригодится начинающим разбираться с прямыми запросами + рыба для пометки доков.
Спасибо! мне помогла обработка для удаления данных в базе размером 3Г.