Быстрая пометка на удаление документов для Свертки (используется 1С++)

Обработки - Свертка базы

Методика быстрого удаления большого количества документов (для dbf-версии, компоненты: оперативный учет, бухучет). (используется 1С++)

Методика быстрого удаления большого количества документов (для 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

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

Наименование Файл Версия Размер
БыстраяПроставкаПометокУдаления
.1190014440 33,50Kb
27.02.13
460
.1190014440 33,50Kb 460 Скачать бесплатно
Методика
.1190014666 69,50Kb
27.02.13
227
.1190014666 69,50Kb 227 Скачать бесплатно

См. также

Комментарии
1. Mihenius (mihenius) 17.09.07 11:38 Сейчас в теме
Возможно раздел нужно выбрать чистка базы, но я считаю что это все относится к свертке.
2. Mihenius (mihenius) 17.09.07 11:39 Сейчас в теме
Сейчас разбираюсь как сделать выборочную пометку на удаление
3. Mihenius (mihenius) 17.09.07 11:49 Сейчас в теме
Рекомендую вначале проверить на демобазе
По умолчанию делается для ТиС-а для Бух надо поменять closed=0 на closed=4
4. Mihenius (mihenius) 17.09.07 11:54 Сейчас в теме
Оч. понравился вариант из http://infostart.ru/projects/216/
но он только удаляет объекты, а в ТиС-е при непосредственном удалении документов поплывут книги продаж и покупок
5. Mihenius (mihenius) 17.09.07 14:35 Сейчас в теме
Обнаружена ошибка в торговой базе нет файла 1sentry так что на торговых базах нужно закомментировать последний запрос
6. Mihenius (mihenius) 18.09.07 17:58 Сейчас в теме
Разобрался как делается выборочная пометка на удаление
Скоро добавлю ) будет как в (4)
7. Сhe Burashka (CheBurator) 18.09.07 19:07 Сейчас в теме
(5) отработай это в условии программно...
8. V. L. (Vladal) 410 18.09.07 20:02 Сейчас в теме
(5) и (7)
Код
Попытка
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
ФлагБухучета = 1; // получилось!
Исключение
ФлагБухучета = 0; // да не было там никакого переулка!
КонецПопытки
Показать полностью
9. Mihenius (mihenius) 19.09.07 09:54 Сейчас в теме
(8) Да уже давно все сделано ... просто я доделываю выборочную пометку.
Как доделаю все будет нормально.
Пока это так шаблон )
10. Mihenius (mihenius) 19.09.07 17:26 Сейчас в теме
Обновление. Все готово.
Большое спасибо форумчанам http://www.1cpp.ru/forum/YaBB.pl?num=1189945890/15
Обработка помечает на удаление все документы, кроме выбранных видов
Отладка для отладки переданных запросов
11. Ilya (ivisor_fil) 9 24.09.07 10:34 Сейчас в теме
Вобще-то можно так не парится.
1. Переносиш остатки.
2. Устанавливаешь дату рассчета итогов до начала работы системы.
3. Транзакцией ПОМЕСЯЧНО (или набирая определенное кол-во документов) помечаешь на удаление (итоги не прересчитываются т.к. п.2)
4. Удаляешь помеченные на удаление.
5. Пакуешь базу в конфигураторе.

Главное правильно выбрать размер транзакции и то что без транзакции делпалось за 12 часов делается за 30-40 минут (база около 4Гб)
ivn75; Spi1y; Gromgard; +3 Ответить 1
12. Mihenius (mihenius) 24.09.07 11:57 Сейчас в теме
(11)
Честно вы меня рассмешили ))))))))))
Это знают даже молодые, плюс тут же есть 2 обработки делающие это.
А интересно сколько у тебя ТА будет возвращаться обратно если режешь большой период?
Если не резал большие базы лучше не давать советов ))))))))))))
Читай внимательно маны этой обработки. Обрати внимание!!!
И еще: данная методика не претендует на статус абсолютно правильной, распространяется свободно, используется Вами на свой страх и риск.
Сравнивай со стандартным решением. Делай замер 1) стандартная пометка с переносом ТА + перенос ТА на текущее чило
2) непосредственная пометка + пересчет Итогов
Смотри что делается быстрее и выбирай.
Если внимательно читал, то сама обработка сделана не мной, я только адаптировал.
и всегда нужен выбор.
А так обработка пригодится начинающим разбираться с прямыми запросами + рыба для пометки доков.
14. Vital Grushkin (nkvg_a) 20.12.11 09:21 Сейчас в теме
Спасибо! мне помогла обработка для удаления данных в базе размером 3Г.
Оставьте свое сообщение