Простая и очень быстрая обработка для очистки базы путем непосредственного удаления записей из таблиц SQL (используется ADODB.Connection)
Зачастую тестовые базы клиентов (базы используемые для тестирования при приемке работ) со временем становятся основными. И возникает необходимость зачистить тестовые данные (документы, проводки) с возможностью оставить справочные данные, либо необходимость полной очитски базы. В связи с этим, наваял простенькую обработку, которая, пробегаясь по метаданным, получает физические имена таблиц SQL и зачищает непосредственно эти таблицы при помощи ADODB.Connection.
Основное приемущество обработки — скорость. Для примера, нетиповая база (50 рег.св., 50 документов, 50 справочников) на 4 Гб очищается примерно за 30 сек. Но эти показатели могут варьироваться в зависимости от количества объектов конфигурации, качества канала к sql-серверу и производительности sql-сервера.
Обработка работает в двух режимах: удаление только документов и удаление всех данных. В первом режиме удаляются все документы, очищаются все регистры накопления, бухгалтерии и расчетов + можно указать список регистров сведений, которые нужно зачистить вместе с документами, дабы избежать битых ссылок в регистрах. Во втором режиме помимо вышеперечисленного очищаются справочники, ПВХ, планы счетов, планы видов расчета (удаляются все элементы, кроме предопределенных) и все регистры сведений. Все объекты удаляются безвозвратно (если нет бэкапов sql-базы), так что пользуйте осторожно на свой страх и риск. По «F1» мини-хелп.
P.S. Моя первая публикация, так что по традиции: «сильно не пинайте».
Добавлена кнопка, по которой можно выбрать определенные справочники для удаления.
Запускаю обработку жму удалить документы выходить ошибка…
{Форма.ФормаЧисткаБазы(54)}: Поле объекта не обнаружено (GUIDыОбъектов)
НаборРС = РегистрыСведений.GUIDыОбъектов.СоздатьНаборЗаписей();
что делать?
(1) Banzai79,
Прошу прощения. Остался хвост от моей базы. Перезалил обработку, отправил на модерацию. В ближайшее время можно закачать заново.
(0) Удалить ВСЕ данные из БД можно с помощью кнопки удаления в консоли серверов 1С с режимом удаления — очистка базы. Или просто выгрузить конфигурацию, грохнуть БД на SQL и загрузить конфигурацию в чистую БД
(3) echo77,
Не спорю, можно. Но обработка создавалась в помощь заказчику, я не был уверен в знании ими вышеописанных способов. Плюс к этому, очистка всей базы — это не основное ее предназначение. Тут важно то, что ею можно удалить только документы и записи из регистров, связанные с этими документами, а вся справочная информация остается.