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

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

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

Обработка сделана как замена стандартной 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 не будет опубликован. Обязательные поля помечены *