gifts2017

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

Опубликовал it_master (it_master) в раздел Администрирование - Чистка базы

Обработка для поиска, проверки ссылок и непосредственного удаления документов из базы.

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

Обработка сделана как замена стандартной 1С-вской процедуре "Удаление помеченных объектов".

Преимущества:

- не требует монопольного режима

может работать в "горячем" режиме, параллельно работе других пользователей

обработку можно в любой момент времени остановить

 Недостатки:

не делает проверки подчиненных объектов на предмет удаления

не удаляет справочники


           Порядок работы с обработкой:

  1. устанавливаем период выборки документов. можно и без него - тогда будут выбираться все документы (выбираются только помеченные на удаление)
  2. закладка "Список видов объектов" (основная для работы) - здесь формируется таблица со списком видов документов, количества помеченных на удаление и количества документов, которые можно удалить из базы, а так же устанавливается отметка "Проверять" - по каким видам документов делать проверку
  3. кнопки командной панели таблицы:
    1. "Очистить" - удаляет все строки из таблицы
    2. "Заполнить" - по каждому виду документа получает количество объектов помеченных на удаление, и если такие есть, добавляется строка в таблицу
    3. "Проверить" - запускает процедуру проверки выбранных (отметка "Проверять" в таблице) видов документов. проверка делается по каждому виду документа пакетами по 1000 документов (подобрал экспериментально для себя), после чего делается проверка на наличие ссылок на каждый документ, и если таковых не найдено, он (документ) помещается в таблицу на закладке "Объекты к удалению"
    4. "Удалить" - производится непосредственное удаление документов из базы, которые были добавлены в таблицу "Объекты к удалению"
  4. на закладке "Объекты к удалению" можно проделать все вышеназванные действия, только уже для одного вида документа, выбранного в поле "Вид объекта"
  5. закладки "Таблица ссылок" и "Объекты поиска" - служебные. на них расположены временные таблицы используемые для работы. " Таблица ссылок" - это что типа таблицы значений которую возвращает 1С-вская функция НайтиПоСсылкам(<>). " Объекты поиска" - здесь формируется таблица объектов метаданных, по которым необходимо производить поиск.

             Из собственного опыта:

             Необходимость данной обработки возникла из-за того что после свертки базы получилось порядка полутора миллиона объектов (в основном документы) помеченных на удаление. а стандартная процедура "Удаление помеченных объектов" вешала сервак наглухо и дождаться её завершения не представлялось возможным, т.к. работа в базе ведется ежедневно. Поэтому не долго думая и не очень долго "осваивая" интернет пришлось наваять сие чудо. В итоге - после пяти дней не очень напряженной работы в базе осталось около 300 тыс. этих документов.

            Недостатки этой обработки - это скорее недоделки, т.к. меня и на этом этапе всё устроило.

            Не делается проверка подчиненных объектов, которые тоже могут быть удалены. 1С-ка это наверняка делает, поэтому у неё и проверка ("контроль") занимает много времени. Но это, в принципе, обходится несколькими циклами работы данной обработки.

            Не удаляются справочники - просто лень было доделать.

 

04.07.15

            Доработал обработку и проверку ссылок по регистрам бухгалтерии.

(что бы не удалилось то что используется в проводках).

 

07.11.15

           Добавлена обработка справочников (на предмет что и чего можно удалить). Всё по аналогии как и для документов.

(всё таки пришлось и это доделать)

 

            ПРЕДУПРЕЖДЕНИЕ:

ИСПОЛЬЗУЕТЕ НА СВОЙ СТРАХ И РИСК.

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

Наименование Файл Версия Размер
УдалениеОбъектовНе1С.epf 89
.epf 23,80Kb
08.11.15
89
.epf 23,80Kb Скачать

См. также

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

Комментарии

1. Анна Ни (Anyu-n) 01.10.15 00:59
Вы просто гений!!! сразу видно человек сворачивал огромные базы... та же беда... удаляют обычные обработки и не видно - завис он или думает... тут все наглядно процентовка, цифирки бегают :) Спасибо! Пока полет нормальный!
2. Anatol (askv) 26.05.16 10:53
В УТ 10.3 не было процедуры:
Процедура УдалитьНеЗаполненныеЭлементыМассива(МассивЭлементов) Экспорт
	Колво = МассивЭлементов.Количество();
	Для н=1 По Колво Цикл
		Если НЕ ЗначениеЗаполнено(МассивЭлементов[Колво-н]) Тогда
			МассивЭлементов.Удалить(Колво-н);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
...Показать Скрыть

После добавления из БП2 все заработало. Нужная обработка, спасибо автору!
3. Dimka74 Dimka174 (Dimka74) 19.08.16 09:24
Вот сегодня срочно понадобилось удали около 40к документов, стандартная обработка пол дня пыхтела так и не смогла сделать ничего, пришлось остановить. Хотел скачать эту, инфоденег не хватало, за 5 мин накидал эту процедуру, может кому пригодится
Процедура КнопкаВыполнитьНажатие(Кнопка)
	Для Каждого Документ Из Документы Цикл
		Сообщить (Документ);
		Выборка=Документ.Выбрать();
		Пока Выборка.Следующий() Цикл
			Если 
				Выборка.ПометкаУдаления=Истина Тогда
				Выборка.ПолучитьОбъект().Удалить();
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры
...Показать Скрыть


Как видно из кода, процедура перебирает все доки, если помечен на удаление, то безжалостно удаляет, ничего не проверяя.
4. Федор Программист (fedor40) 03.10.16 16:00
Хорошо бы еще отбор по организации сделать
5. it_master (it_master) 03.10.16 19:42
(4) fedor40,
не для всех документов и регистров это можно сделать.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа