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

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

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

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

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

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

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

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

 Недостатки:

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

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


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

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

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

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

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

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

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

 

04.07.15

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

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

 

07.11.15

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

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

 

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

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

5 Comments

  1. Anyu-n

    Вы просто гений!!! сразу видно человек сворачивал огромные базы… та же беда… удаляют обычные обработки и не видно — завис он или думает… тут все наглядно процентовка, цифирки бегают 🙂 Спасибо! Пока полет нормальный!

    Reply
  2. askv

    В УТ 10.3 не было процедуры:

    Процедура УдалитьНеЗаполненныеЭлементыМассива(МассивЭлементов) Экспорт
    Колво = МассивЭлементов.Количество();
    Для н=1 По Колво Цикл
    Если НЕ ЗначениеЗаполнено(МассивЭлементов[Колво-н]) Тогда
    МассивЭлементов.Удалить(Колво-н);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    

    Показать

    После добавления из БП2 все заработало. Нужная обработка, спасибо автору!

    Reply
  3. Dimka74

    Вот сегодня срочно понадобилось удали около 40к документов, стандартная обработка пол дня пыхтела так и не смогла сделать ничего, пришлось остановить. Хотел скачать эту, инфоденег не хватало, за 5 мин накидал эту процедуру, может кому пригодится

    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Для Каждого Документ Из Документы Цикл
    Сообщить (Документ);
    Выборка=Документ.Выбрать();
    Пока Выборка.Следующий() Цикл
    Если
    Выборка.ПометкаУдаления=Истина Тогда
    Выборка.ПолучитьОбъект().Удалить();
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры
    

    Показать

    Как видно из кода, процедура перебирает все доки, если помечен на удаление, то безжалостно удаляет, ничего не проверяя.

    Reply
  4. fedor40

    Хорошо бы еще отбор по организации сделать

    Reply
  5. it_master

    (4) fedor40,

    не для всех документов и регистров это можно сделать.

    Reply

Leave a Comment

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