Быстрая пометка на удаление документов для Свертки (используется 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

13 Comments

  1. mihenius

    Возможно раздел нужно выбрать чистка базы, но я считаю что это все относится к свертке.

    Reply
  2. mihenius

    Сейчас разбираюсь как сделать выборочную пометку на удаление

    Reply
  3. mihenius

    Рекомендую вначале проверить на демобазе

    По умолчанию делается для ТиС-а для Бух надо поменять closed=0 на closed=4

    Reply
  4. mihenius

    Оч. понравился вариант из http://infostart.ru/projects/216/

    но он только удаляет объекты, а в ТиС-е при непосредственном удалении документов поплывут книги продаж и покупок

    Reply
  5. mihenius

    Обнаружена ошибка в торговой базе нет файла 1sentry так что на торговых базах нужно закомментировать последний запрос

    Reply
  6. mihenius

    Разобрался как делается выборочная пометка на удаление

    Скоро добавлю ) будет как в (4)

    Reply
  7. CheBurator

    (5) отработай это в условии программно…

    Reply
  8. v.l.

    (5) и (7)

    Код
    Попытка
    БИ = СоздатьОбъект("БухгалтерскиеИтоги");
    ФлагБухучета = 1; // получилось!
    Исключение
    ФлагБухучета = 0; // да не было там никакого переулка!
    КонецПопытки
    

    Показать полностью

    Reply
  9. mihenius

    (8) Да уже давно все сделано … просто я доделываю выборочную пометку.

    Как доделаю все будет нормально.

    Пока это так шаблон )

    Reply
  10. mihenius

    Обновление. Все готово.

    Большое спасибо форумчанам http://www.1cpp.ru/forum/YaBB.pl?num=1189945890/15

    Обработка помечает на удаление все документы, кроме выбранных видов

    Отладка для отладки переданных запросов

    Reply
  11. ivisor_fil

    Вобще-то можно так не парится.

    1. Переносиш остатки.

    2. Устанавливаешь дату рассчета итогов до начала работы системы.

    3. Транзакцией ПОМЕСЯЧНО (или набирая определенное кол-во документов) помечаешь на удаление (итоги не прересчитываются т.к. п.2)

    4. Удаляешь помеченные на удаление.

    5. Пакуешь базу в конфигураторе.

    Главное правильно выбрать размер транзакции и то что без транзакции делпалось за 12 часов делается за 30-40 минут (база около 4Гб)

    Reply
  12. mihenius

    (11)

    Честно вы меня рассмешили ))))))))))

    Это знают даже молодые, плюс тут же есть 2 обработки делающие это.

    А интересно сколько у тебя ТА будет возвращаться обратно если режешь большой период?

    Если не резал большие базы лучше не давать советов ))))))))))))

    Читай внимательно маны этой обработки. Обрати внимание!!!

    И еще: данная методика не претендует на статус абсолютно правильной, распространяется свободно, используется Вами на свой страх и риск.

    Сравнивай со стандартным решением. Делай замер 1) стандартная пометка с переносом ТА + перенос ТА на текущее чило

    2) непосредственная пометка + пересчет Итогов

    Смотри что делается быстрее и выбирай.

    Если внимательно читал, то сама обработка сделана не мной, я только адаптировал.

    и всегда нужен выбор.

    А так обработка пригодится начинающим разбираться с прямыми запросами + рыба для пометки доков.

    Reply
  13. nkvg_a

    Спасибо! мне помогла обработка для удаления данных в базе размером 3Г.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *