gifts2017

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

Опубликовал ПодОпытный (mihenius) в раздел Обработки - Свертка базы

Методика быстрого удаления большого количества документов (для 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
435
.1190014440 33,50Kb 435 Бесплатно
Методика
.1190014666 69,50Kb
27.02.13
209
.1190014666 69,50Kb 209 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

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) 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) 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Г.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа