IE2017

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

Администрирование - Чистка базы

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

Небольшое предисловие.

Уверен, каждый представитель нашей жёлто-красной гильдии рано или поздно сталкивался с проблемой выборочного удаления конкретных объектов. И здесь (если, конечно, вы работаете не с примитивной конфигурацией типа каркасной) начинается действо, которое схематично можно изобразить вот так:

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

В конце концов гром грянул (попался проект с экстремально замусоренной НСИ) - мужик сделал (нет, ну перекрестившись конечно же предварительно). Функциональность разработки полностью удовлетворила исходным требованиям.

Принцип работы прост до безобразия: указали объект и нажали "Произвести поиск" (альтернативно можно просто перетащить объект на поле списка), пробежались глазами по объектам, дабы исключить попадание в этот список лишних, и нажали кнопку "Удалить" для непосредственного удаления (о, как же не хватало порой этой заветной кнопки непосредственного удаления!) или "Пометить на удаления" для последующей обработки штатными средствами (обе кнопки находятся в меню "Действия", также доступны хоткеи Ctrl+F8 и F8 соответственно).

Результатом действия обработки будет непосредственное удаление (либо пометка на удаление) всех объектов, попавших в дерево ссылающихся объектов (даже тех, которые явно не ссылаются на выбранный объект).

Да, на нагруженных системах есть риск получить "битые ссылки", поэтому пользоваться обработкой на промышленных системах следует с осторожностью, зато во время опытной или опытно-промышленной эксплуатации обработка оказалась крайне эффективным средством для анализа НСИ и избавления от мусорных позиций.

Обработка позволяет корректно отработать такие "кольцевые" рефренсы, как "Единицы измерения" в УТ или УПП. Кто сталкивался с удалением номенклатуры в этих конфигурациях, знает, что штатной обработкой крайне сложно производить выборочные удаления. А те, кто вплотную занимается внедрениями на УПП с использованием РАУЗ, наверняка оценят поиск и корректное удаление ключей аналитики, у которых отсутствует непосредственная связь с объектами аналитики.

Из дополнительных возможностей: регулировка макимальной глубины рекурсивного поиска (бегунок справа от списка), поддержка drag'n'drop, открытие отдельных окон поиска для объектов из списка найденных ссылок, прикрепление окна к краю + возможность сделать окно прячущимся.

Отдельно также стоит отметить наличие опции "стоп-лист". Наличие в найденных ссылках объектов типа, присутствующего в стоп-листе, блокирует возможность удаления выбранного объекта. Это бывает полезно при глобальных чистках больших баз, например при такой оперции, как удаление одной из организаций в мультифирменной БД. В ходе удаления встречается ситуация, когда у контрагента в качестве основного назначен договор с удаляемой организацией. Но удалять контрагентов вместе с организацией было бы не правильным. Для исключения такого удаления тип "Справочник.Контрагенты" просто добавляется в стоп-лист и пока все контрагенты не будут исключены из списка найденных ссылок, обработка не даст удалить выбранную организацию.

P.S. Любителям холиваров на тему "такое нельзя давать в руки пользователям" отвечу сразу: нельзя - не давайте! Кстати, для таких специально предусмотрел возможность в модуле обработки определить режим работы обработки (по умолчанию РежимУдаления = 2):

// Значения режимов:
// РежимУдаления = 0; Только поиск ссылок
// РежимУдаления = 1; Поиск ссылок и пометка на удаления
// РежимУдаления = 2; Поиск ссылок, пометка на удаление и непосредственное удаление

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

Наименование Файл Версия Размер
Внешняя обработка "Мастер поиска и удаления"
.epf 49,71Kb
27.03.14
305
.epf 1.0.1 49,71Kb 305 Скачать

См. также

Комментарии
1. rasswet (rasswet) 80 02.04.14 08:59 Сейчас в теме
не было у вас случаев, когда часть надо удалить, а часть перекинуть? Например по одному сотруднику часть документов удаляем, а парочку хотим к другому сотруднику перепривязать. Возможно было бу удобно к вашей идее сделать и такой механизм?
2. юрий гулидов (gull22) 82 02.04.14 09:09 Сейчас в теме
3. rasswet (rasswet) 80 02.04.14 09:10 Сейчас в теме
не было у вас случаев, когда часть надо удалить, а часть перекинуть? Например по одному сотруднику часть документов удаляем, а парочку хотим к другому сотруднику перепривязать. Возможно было бы удобно к вашей идее сделать и такой механизм?
4. Константин Хрипков (mbreaker) 1102 02.04.14 11:45 Сейчас в теме
(3) rasswet, были, но для подобных случаев есть более подходящие средства. Например более "тяжёлая" разработка http://infostart.ru/public/175028/. Или предварительная обработка иными средствами (их много) перед запуском моей утилиты. Я не зря написал в описании "хотелось чего-то с одной стороны простого в работе, но максимально эффективного". Призвание данной обработки - быстрый и удобный поиск, анализ найденных ссылок и возможность рекурсивной зачистки. Превращение этого средства в "Инструменты разработчика" не предполагалось.
5. DAnry (DAnry) 12 03.04.14 19:06 Сейчас в теме
Илюстрация класная, и главное "в тему". Практически не было пользователя, на моей памяти, который бы не задал вопроса: "Почему я не могу удалить помеченный на удаление объект?" Многим очень тяжело объяснить эту премудрость. С вашего разрешения буду пользоваться впредь этим доходчивым рисунком.
Shanya1983; ivnik; Mi4man; rayastar; EmpireSer; spetzpozh; GATTUSO; +7 Ответить 1
6. Константин Хрипков (mbreaker) 1102 03.04.14 21:57 Сейчас в теме
(5) DAnry, конечно пользуйтесь. Абсолютно не возражаю.
7. Тарас Курдельчук (softgarant) 47 14.04.14 17:45 Сейчас в теме
Илюстрация - то что надо)
8. Юрий Баранов (YuriNevermind) 19.05.14 18:26 Сейчас в теме
Подскажите пожалуйста, как добавить и запустить эту внешнюю обработку? Платформа 8.3.4.389
Документооборот 1.3.1.5
9. Юрий Баранов (YuriNevermind) 20.05.14 11:34 Сейчас в теме
Пытаюсь запустить эту обработку ДрагНДропом и через Файл->Открыть, открывается пустое окошко, работает только вывод справки, что я делаю не так?
10. Константин Хрипков (mbreaker) 1102 22.05.14 01:32 Сейчас в теме
(9)Вы пытаетесь открыть обработку из под интерфейса управляемых форм (УФ) без режима совместимости с "обычными" формами. К сожалению чисто технологически это невозможно, т.к. конфигурация 1С:Документооборот одна из первых, которая написана исключительно под УФ. Единственный вариант - это завести пользователя, для которого будет запускаться режим "обычных" форм (см. настройки пользователя БД через Конфигуратор).
11. Нарек Мартиросян (KreditNIK) 28.05.14 17:28 Сейчас в теме
подскажите, что-то не могу начать работать с ней. Она заточена под УТ 11,1???
12. Константин Хрипков (mbreaker) 1102 04.06.14 13:07 Сейчас в теме
(11) KreditNIK, обработка сделана в неуправляемых формах, запускать её на УТ 11 нужно под пользователем с режимом запуска = "Обычное приложение".
13. юрий гулидов (gull22) 82 20.06.14 11:18 Сейчас в теме
Не виден бегунок в Управление производственным предприятием, редакция 1.3 (1.3.52.1)
14. Константин Хрипков (mbreaker) 1102 20.06.14 15:22 Сейчас в теме
(13) gull22, обработка совершенно самостоятельная, поэтому от конфигурации или её версии совершенно не зависит видимость элементов. Могу посоветовать сбросить персональные настройки основной формы обработки. Для этого нужно установить фокус на любом элементе формы и нажать Alt+Shift+R или кликнуть правой кнопкой мыши на заголовке формы и выбрать "Восстановить положение окна".
15. Евгений Чекушкин (check2) 20 06.04.15 21:33 Сейчас в теме
Шикарная обработка! Спасибо. Из пожеланий могу добавить разве что возможность задавать несколько ссылок.
16. pavel ev (pavelyar) 06.04.15 21:58 Сейчас в теме
Не нашел ,на УФ работает?
17. Константин Хрипков (mbreaker) 1102 07.04.15 07:07 Сейчас в теме
(15) check2, спасибо за признание труда. Всегда приятно услышать приятное, и плевать на тавтологию! ))
С несколькими ссылками неоправданно усложняется логика работы, поэтому отказался от этой идеи.
Но там включена возможность открыть ссылку из списка в новом окне для параллельной работы.
18. Константин Хрипков (mbreaker) 1102 07.04.15 07:11 Сейчас в теме
(16) pavelyar, под УФ адаптировать обработку пока не стал, т.к. УФ накладывает много ограничений на подобные вещи.
Для УФ могу посоветовать пользоваться ключом стартера /RunModeOrdinaryApplication для запуска приложения в режиме ОФ.
19. Abadonna Abadonna (abadonna83) 30 11.11.16 16:40 Сейчас в теме
Мне обработка понравилась. Очень помогла при удаление элемента справочниками с большим количеством ссылок.. Однозначно рекомендую.
20. Serge Menyailov (ctt) 27.06.17 09:32 Сейчас в теме
Добрый день. В Документообороте версии 2.1.7 не работает - не удаляет, пометки на удаление тоже не ставит - выходит ошибка:
{ОбщийМодуль.ОбменСМобильнымиСервер.Модуль(27,39)}: Переменная не определена (ОбменСМобильнымиСерверПовтИсп)
УзелОбменаДляРегистрацииВсехДанных = <<?>>ОбменСМобильнымиСерверПовтИсп.ПолучитьУзелДляРегистрацииДанных();
{ОбщийМодуль.ОбменСМобильнымиСервер.Модуль(790,15)}: Переменная не определена (ОбменСМобильнымиСерверПовтИсп)
УзелОбмена = <<?>>ОбменСМобильнымиСерверПовтИсп.ПолучитьУзелДляРегистрацииДанных();
{ОбщийМодуль.ОбменСМобильнымиСервер.Модуль(188,11)}: Переменная не определена (ОбменСМобильнымиDMXСервер)
Возврат <<?>>ОбменСМобильнымиDMXСервер.ОбработатьВходящееСообщение(МобильныйКлиент, Сообщение);

В нижнем окне пишет:
{ВнешняяОбработка.МастерПоискаУдаления.Форма.Форма.Форма(172)}: Ошибка при вызове метода контекста (Удалить): Ошибка при выполнении обработчика - 'ПередЗаписью': {РегистрСведений.ДополнительныеСведения.МодульНабораЗаписей(14)}: Ошибка при вызове метода контекста (ОбщийМодуль): Попытка передачи мутабельного значения результата метода ОбщийМодуль ().
Объект "00-00000000000000000000000000000000000000000000001" не удален!
Оставьте свое сообщение