Обработка sql-удаления объектов базы (чистка базы)

Простая и очень быстрая обработка для очистки базы путем непосредственного удаления записей из таблиц SQL (используется ADODB.Connection)

Простая и очень быстрая обработка для очистки базы путем непосредственного удаления записей из таблиц SQL (используется ADODB.Connection)

Зачастую тестовые базы клиентов (базы используемые для тестирования при приемке работ) со временем становятся основными. И возникает необходимость зачистить тестовые данные (документы, проводки) с возможностью оставить справочные данные, либо необходимость полной очитски базы. В связи с этим, наваял простенькую обработку, которая, пробегаясь по метаданным, получает физические имена таблиц SQL и зачищает непосредственно эти таблицы при помощи ADODB.Connection.

Основное приемущество обработки — скорость. Для примера, нетиповая база (50 рег.св., 50 документов, 50 справочников) на 4 Гб очищается примерно за 30 сек. Но эти показатели могут варьироваться в зависимости от количества объектов конфигурации, качества канала к sql-серверу и производительности sql-сервера.

Обработка работает в двух режимах: удаление только документов и удаление всех данных. В первом режиме удаляются все документы, очищаются все регистры накопления, бухгалтерии и расчетов + можно указать список регистров сведений, которые нужно зачистить вместе с документами, дабы избежать битых ссылок в регистрах. Во втором режиме помимо вышеперечисленного очищаются справочники, ПВХ, планы счетов, планы видов расчета (удаляются все элементы, кроме предопределенных) и все регистры сведений. Все объекты удаляются безвозвратно (если нет бэкапов sql-базы), так что пользуйте осторожно на свой страх и риск. По «F1» мини-хелп.

P.S. Моя первая публикация, так что по традиции: «сильно не пинайте».

 

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

4 Comments

  1. Banzai79

    Запускаю обработку жму удалить документы выходить ошибка…

    {Форма.ФормаЧисткаБазы(54)}: Поле объекта не обнаружено (GUIDыОбъектов)

    НаборРС = РегистрыСведений.GUIDыОбъектов.СоздатьНаборЗаписей();

    что делать?

    Reply
  2. ShurikDM

    (1) Banzai79,

    Прошу прощения. Остался хвост от моей базы. Перезалил обработку, отправил на модерацию. В ближайшее время можно закачать заново.

    Reply
  3. echo77

    (0) Удалить ВСЕ данные из БД можно с помощью кнопки удаления в консоли серверов 1С с режимом удаления — очистка базы. Или просто выгрузить конфигурацию, грохнуть БД на SQL и загрузить конфигурацию в чистую БД

    Reply
  4. ShurikDM

    (3) echo77,

    Не спорю, можно. Но обработка создавалась в помощь заказчику, я не был уверен в знании ими вышеописанных способов. Плюс к этому, очистка всей базы — это не основное ее предназначение. Тут важно то, что ею можно удалить только документы и записи из регистров, связанные с этими документами, а вся справочная информация остается.

    Reply

Leave a Comment

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