gifts2017

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

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

Обработка предназначена для удаления связанной информации по организации из информационной базы. Должна работать в основных типовых конфигурациях (БП, УТ, ЗУП, ЗБУ, КА, УПП) в режиме толстого клиента (обычное приложение).

ВНИМАНИЕ!!! Перед запуском обработки необходимо резервное копирование  информационной базы.

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

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

Наименование Файл Версия Размер Кол. Скачив.
ОчисткаДанныхПоОрганизациям.epf
.epf 18,77Kb
05.09.13
746
.epf 18,77Kb 746 Скачать

См. также

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

Комментарии

0. Владислав Томашевич (tomvlad) 16.11.11 13:46
Обработка предназначена для удаления связанной информации по организации из информационной базы. Должна работать в основных типовых конфигурациях (БП, УТ, ЗУП, ЗБУ, КА, УПП) в режиме толстого клиента (обычное приложение).

Перейти к публикации

1. Евгений Юпринский (Evgeny2009) 16.11.11 13:46
Помечать помечает, а удалять не удаляет. Проверил на 1С Комплексная 1.1.15 Демо. не смог удалить Торговый Дом Комплексный"
2. Владислав Томашевич (tomvlad) 16.11.11 13:59
(1) Возможно есть ссылки на помеченные объекты.

Например, организация А указана в договоре с контрагентом Б, который в свою очередь указан в документе С (а организация - нет).

В этом случае, в первый проход помечается на удаление организация А и договор с контрагентом Б. Во втором проходе будет помечен на удаление документ С (т.к. помеченный на удаление договор на него ссылается).

Т.е. в этом случае нужно выполнить повторное удаление. Через какое-то время организация должна исчезнуть.

P.S. Можно, конечно, дописать и рекурсивное удаление - до тех пор, пока не останется помеченных на удаление объектов.
3. Vladimir (Boroda) 16.11.11 23:21
Интересно, у меня в ЗУПе, скажем, четыре организации (одно из них головная, которой подчинены другие три). Между этими организациями есть переводы сотрудников из одной в другую. И как поведёт себя обработка, если мне нужно зачистить одну организацию? Будет отслеживать сотров, первоначально зафиксированных в этой зачищаемой организации по другим, как Сталин Троцкого по миру, пока не найдёт и не удалит? Или оставит жить их в другой организации? Но тогда будет странный "завис": перевод (кадровое перемещение) есть, а приём на работу отсутствует.... Это реальная ситуация и реальный вопрос, стоящий у нас. Как раз думал, как бы это провернуть, а тут обработка появилась, позволяющая осуществить эту операцию, но вот некоторые сомнения в корректности её поведения имеются...
4. latrium (latrium) 17.11.11 01:06
Все получилось, спасибо.
Правда на одной организации (у которой документов с 2006 года) очистка проходила 3-е суток на MSSQL
5. Владислав Томашевич (tomvlad) 17.11.11 07:00
(4) latrium, зачем вводить других в заблуждение бессмысленным флудом? Неужели трудно было посмотреть на дату публикации? Каким образом обработка могла работать 3 суток, если она опубликована менее суток назад, и среди скачавших ее вас нет? $$$ можно заработать и другим способом.

(3) Алгоритм работы обработки предельно прост, используются только штатные методы платформы, удаление производится с контролем ссылочной целостности.

Если вкратце, то:

1. Пользователь выбирает организации для удаления и метод удаления.
2. Помечается на удаление выбранная организация и ее подчиненные элементы справочников (подразделения и т.п.).
3. Производится поиск ссылок на помеченные на удаление объекты методом: НайтиПоСсылкам(НайтиПомеченныеНаУдаление()).
4. Устанавливается пометка удаления на найденные ссылки и удаляются записи независимых регистров сведений.
5. Производится удаление помеченных объектов: УдалитьОбъекты(НайтиПомеченныеНаУдаление(), Истина);

Не может появиться битых ссылок.
6. latrium (latrium) 17.11.11 12:55
(5) tomvlad, Поясню. Дело в том, что обработка появилась у меня раньше чем ее опубликовали, скинул знакомый программист в субботу. Откуда она взялась у него я не знаю.
7. Владислав Томашевич (tomvlad) 17.11.11 12:56
(6) Не мог знакомый программист ничего скинуть. Я ее только вчера написал. Или это была не та обработка.
8. latrium (latrium) 17.11.11 15:34
(7) tomvlad, Сорри, сейчас на работе посмотрел, действительно не она. Нет режима очистки данных. Сейчас скачаю вашу, попробую у другого клиента. Еще раз извиняюсь.
9. Vladimir (Boroda) 17.11.11 20:05
(5) Понятно. Спасибо. Но, в любом случае, надо прогнать на базе, посмотреть "вживую", как она работает в конктреном случае.
10. Юрий Осипов (yuraos) 20.11.11 18:11
Спасибо большое!
Как раз недавно было актульно для ЗУП-па.
Хозяева аварийно терминировали одну из контор ...
... вот и пришлось срочно все чистить в ЗУП-е содержащее фирму '12' :)))))
Чистили почти ручками,
приспособив на скорую руку обработку "поиск ссылок" с ИТС.
Но хорошо иметь под рукой что-то более продуманное и универсальное.
11. Юрий Осипов (yuraos) 20.11.11 18:17
yuraos пишет:

Спасибо большое!
Как раз недавно было актульно для ЗУП-па.
Хозяева аварийно терминировали одну из контор ...
... вот и пришлось срочно все чистить в ЗУП-е содержащее фирму '12' :)))))
Чистили почти ручками,
приспособив на скорую руку обработку "поиск ссылок" с ИТС.
Но хорошо иметь под рукой что-то более продуманное и универсальное.

PS:
Эта обработка как-нибудь разруливает ситуации
с перекрестными ссылками между фирмами???
Когда в одном объекте могут быть ссылки на две и больше организации.
В ЗУП-е, например, это может быть какой-нибудь кадровый перевод из фирмы в фирму.
12. latrium (latrium) 20.11.11 20:05
Выдалось время, протестировал наконец то вашу обработку. Работа проходила с файловой базой.
Удаляет быстро, 1500 документов примерно унесло за 15-20 минут (комп использовался еще другими задачами, так может быть быстрее было бы).
Сейчас хочу попробовать удалить организацию с большим объемом документов. Отпишу по итогам.
13. latrium (latrium) 21.11.11 02:00
Интересный момент: база 55000 документов, вроде процесс шел 4 часа. После завершения организация остается в списке,опять запускаю обработку. Опять начинает чистить, уже 22000 документов. Организация остается. Как быть?
Запустил в 3-й раз, уже 88000 документов.
14. Kostya Zhurov (It-developer) 24.11.11 15:41
15. Александр Удалов (higs) 25.11.11 11:33
Присоединюсь к (11). Если у кого есть возможность проверить этот вариант с кросс-ссылками, было бы очень интересно знать, как в этом случае поступает обработка. Предполагаю, что в этом случае вычистить организацию просто не получится, что вполне логично.
16. Владислав Томашевич (tomvlad) 25.11.11 11:38
(11) (15) Да никак она не поступает см. ответ в (5). Нашли помеченные на удаление - удалили (попытались удалить) ссылающиеся объекты, выполнили физическое удаление (с контролем ссылочной целостности). На втором проходе нашли ссылки на помеченные на удаление в первом проходе - попытались их удалить. И так далее....

Можно конечно запустить рекурсивный поиск, но в таком случае ресурсов потребуется гораздо более.. А в таком режиме за 1-3 приема скорее всего организация будет удалена.
17. knopka (kudev@rambler.ru) 30.11.11 02:37
Пытаюсь пометить на удаление все организации, как только доходит до предопределенных справочников, останавливается с сообщением Пометка на удаление предопределенных справочников запрещена.
Все что пометилось на удаление, удаляется затем стандартной обработкой. Но часть фирм, доков и справочников остается.
ЗУП 2.5.42.4
19. Владислав Томашевич (tomvlad) 01.12.11 16:50
(17)

Внесены изменения в работу обработки:

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


(18) Обработка универсальна, ее можно использовать в любой конфигурации.

В вашем случае будут помечены на удаление:
    Выбранная организация.
    Сотрудники, принятые в нее.
    Документы, которые ссылаются на сотрудников, принятых в выбранную организацию.

Если требуется иное поведение обработки - Вы легко сможете разработать его сами либо пригласив специалиста.
20. Гость 01.12.11 17:10
latrium пишет:

Все получилось, спасибо.
Правда на одной организации (у которой документов с 2006 года) очистка проходила 3-е суток на MSSQL


Круто
21. Витос 1С (VitaliyPovod) 01.12.11 17:11
Гость пишет:




А если бы ещё можно было выбирать, что именно удалить (метаданные)!
22. Евгений Степанов (EvgSt) 01.12.11 17:55
Присоединюсь. Кроссылки для УПП, УТ, КА - это очень актуально. Например, меж фирменная продажа товара.
23. NPMar (NPMar) 08.12.11 14:02
Ну очень серьезная обработка! Можно здорово шарахнуть!. особенно в ЗУП, да и не только.
Правильно сказал VitaliyPovod, что если бы можно было выбирать, что удалять.
В случае у darin44, если сотрудник принят в организацию, а потом переведен в другую,
будет удален?
24. Владислав Томашевич (tomvlad) 08.12.11 14:11
(23) Не понимаю в чем проблема! Вам нужно удалить организацию Х? ОК, тогда нужно удалить всех сотрудников, которые приняты в организацию Х! Ах, оказывается они переведены в организацию Y. Тогда в чем глубокий смысл удаления организации Х? Не используйте эту обработку, напишите свою.

До сих пор ни один из высказавшихся не предложил алгоритм или вариант решения, который бы его удовлетворил!
25. NPMar (NPMar) 08.12.11 14:19
Извените, я не хотела критиковать Вашу обработку, думаю она может очень пригодиться.
Конечно же ею надо пользовать с умом. И все нюансы предусмотреть невозможно, это понятно.
26. Владислав Томашевич (tomvlad) 08.12.11 14:26
(25) Конструктивная критика только приветствуется, однако, я уже устал в данной ветке отвечать, что может обработка и чего она не может. Никто еще пока не сказал, чего он хочет конкретно. Было бы сказано "Хочу чтобы не удалялись данные по филиалам удаляемой организации, для этого нужно сделать то-то и то-то", ОК, никаких вопросов. Можно было бы и подумать. А так все сводится к банальному "мне она не подходит, потому что не работает так как я хочу, а как я хочу я не знаю".
27. Андрей Григорьев (Borisych) 11.12.11 00:44
(18) darin44, причем тут сотрудники?
28. Андрей Григорьев (Borisych) 11.12.11 00:46
можно пометить на удаление организацию и потом вот этим: http://infostart.ru/public/63977/ (совсем недавно помогал коллеге с такой же проблемой в БП, организация удалилась на ура)
32. WWWolfy (WWWolfy) 21.03.12 13:10
У меня обработка стала удалять документы, которые относились к Организации, которую хотели оставить.
Т.е. удалялись док-ты Организации, у которой галочка не стояла. Конфа - типовая УТ.
Получается что обработка удаляет лишнее, будьте внимательны.
(пробовал ставить Итераций = 1, та же беда)
33. Михаил Ражиков (tango) 20.06.12 20:45
я позволил себе некоторую вольность, коллега
надеюсь, вы будете снисходительны, учитывая все обстоятельства
http://www.buhonline.ru/forum/index?g=posts&t=82622
34. Марина Федорова (mvfrf) 08.08.12 04:22
Уважаемый автор! Сегодня очищали 2 базы: БП и ЗУП. В БП ненужные организации удалились достаточно быстро, но обработка удалилила и все объекты, которые у нас были помечены на удаление по другим фирмам. В результате удалились целиком операции. Как я поняла, если в 1С удаление помеченных объектов происходит обязательно с контролем возможности удаления, то обработка удаляет все объекты, у которых она поставила пометку на удаление, плюс прихватывает объекты, помеченные наудаление по ВСЕМ фирмам и НЕ контролирует связи. Пример: был помечен на удаление банк поставщика в НЕудаляемой фирме. В результате удалились целиком документы на списание с расчетного счета, в которых присутствовал этот банк.
Как проверять ЗУП на наличие ошибок не знаю, там оборотку не сделаешь.
Просьба исправить обработку.
35. Ольга Татаринова (viktorinka777) 15.08.12 14:18
Здравствуйте. Пытаюсь удалить вашей обработкой данные по организации. Ошибка у меня следующая: !Вид договора "С поставщиком" может устанавливаться только когда у контрагента указано что он является поставщиком. Не удалось записать "Основной договор". На этом обработка останавливается. Как быть?
36. Maxim Valuev (ai1r) 15.08.12 17:29
Добрый день. Вопрос такой:
Необходимо удалить организацию Х, не удаляя организацию Y.
У организации Х есть N взаимоотношений c Y (займы, одни и те же работники, покупка/продажа и пр.).

Скажите, в текущей версии обработки, что произойдёт с документами организации Y? Как избежать удаления документов?
Мне видится идея добавить алгоритм проверки: Если в документе организация X является контрагетом {не удалять документ; если еще не существует создать контрагента Х; переделать ссылку}

Скажите, возможно ли это реализовать?
37. Владислав Томашевич (tomvlad) 15.08.12 19:50
(34) mvfrf, обработка производит рекурсивный поиск ссылок на организации, т.е. например на организацию ссылается элемент справочника "Договоры контрагентов", на договор - элемент справочника "Контрагенты" (через реквизит "Основной договор"), на контрагента - документы поступления и т.д. Все эти объекты будут помечены на удаление и удалены.

(35) viktorinka777, попробуйте использовать другую обработку. Похожих на эту на сайте довольно много.

(36) ai1r, к сожалению текущая загрузка не оставляет мне времени на доработку этой моей обработки (и других бесплатных). Приоритет отдается коммерческим продуктам. Однако, код обработки открыт, и я не сомневаюсь, что Вы можете сами реализовать любой необходимый Вам функционал.
38. Maxim Valuev (ai1r) 16.08.12 01:35
(37) tomvlad, Боюсь, что я не силён в 1С программировании. Если доработка данного решения требует коммерциализации, то пусть будет так - я бы с радостью купил рабочее решение!
39. Максим Красовский (noook) 21.08.12 14:20
спасибо за работу!
пробую обработку - вылетает ошибка
пробовал несколько раз, разные варианты итераций, но эффект один
{Форма.Форма.Форма(126)}: Значение не является значением объектного типа (ПометкаУдаления)
Если Данные.ПометкаУдаления Тогда
//
база комплексная, посленяя версия
40. Алекс Ю (AlexO) 21.08.12 14:25
(38) ai1r,
ну так на сайте много коммерческих разработчиков... возьмемся и сделаем :)
41. Алекс Ю (AlexO) 21.08.12 14:27
(36) ai1r,
Если в документе организация X является контрагетом {не удалять документ; если еще не существует создать контрагента Х; переделать ссылку}

в таком случае, по идее, надо оставлять документ и организацию Х, удаляя все остальные докмуенты, не связанные с Y.
42. Андрей Уткаев (AndrewUtkaev) 29.10.12 14:54
Обработка удаляет много лишнего. Сразу причем не обратил внимание. После ее работы запустил тестирование на ошибки в конфигураторе - получил много ошибок. Так, что в описании верно подмечено - делайте резервную копию.
43. Владислав Томашевич (tomvlad) 29.10.12 15:07
(42) AndrewUtkaev, удаление производится с контролем ссылочной целостности. Скорее всего ошибки в информационной базе уже были.
44. Андрей Уткаев (AndrewUtkaev) 29.10.12 15:10
В копии, сделанной до работы обработки ошибок не было.
45. Сергей (Sybr) 26.11.12 19:09
Хорошая обработка. Правда пришлось немного доработать, чтобы правильно удаляла.
46. Максим Полянский (yandextesting) 04.03.13 15:06
Добавил в Вашу обработку проверку перед удалением (пометкой на удаление) данных по организациям, которые не планировалось удалять, т.е. реализовал первичную проверку кросс-ссылок, чтобы данные других организаций напрямую ссылающиеся на организацию) не пострадали. Если кому-то это нужно, то опубликую.
47. Вячеслав Иванов (Sjawa2004) 06.05.13 23:44
Спасибо! Очень пригодилась. В УТ 10.3 отработала на ура! Правда скачивал не отсюда! Единственное неудобно, что в случае возникновения ошибки не выводит объект на котором споткнулась! А в целом очень помогла!
48. Марат Нафиков (Jetoo) 13.05.13 10:35
Руки бы за такое отрывал! А так, просто минусую...
49. Владислав Томашевич (tomvlad) 13.05.13 10:53
(48) Марат, будьте любезны дать развернутый комментарий, раз уж собираетесь отрывать руки.
50. Марат Нафиков (Jetoo) 13.05.13 11:30
(49) Простой пример. На удаление помечен элемент справочника "Пользователи". Пользователь является ответственным во множестве документов различных организаций. Ваша обработка удаляет все эти документы вне зависимости от организации. Идеально для вредительской деятельности!
51. Владислав Томашевич (tomvlad) 13.05.13 12:09
(50) Всегда считал, что своевременное удаление помеченных объектов является прямой обязанностью администратора ИБ (насколько понимаю, Вы выполняете его функции). Таким образом, помеченных на удаление объектов в нормальной базе быть не должно.

На форме обработки специально добавлен текст, поясняющий, что работает она рекурсивно - помечает на удаление объекты, ссылающиеся на выбранные организации, затем объекты, ссылающиеся на помеченные объекты в первой итерации и т.д. После того, как ссылок на помеченные на удаление объекты не останется, выполняется удаление ВСЕХ помеченных на удаление объектов ИБ.

Из вышеизложенного можно сделать следующие выводы:

1. Нормальная работа с ИБ не ведется - имеется большое количество помеченных на удаление объектов.
2. Гарантировать, что обработку запустит именно администратор ИБ (а предварительно создаст резервную копию) Вы не можете.
3. Вам лучше не пользоваться этой обработкой, а написать свою, при разработке которой Вы несомненно проявите все свои таланты.
52. Марат Нафиков (Jetoo) 13.05.13 12:25
(51) Бред! На помеченные объекты есть ссылки, которые нельзя удалять - это обычное состояние базы. Разберитесь в своем коде: на удаление помечаются объекты, которые не связанны с выбранными организациями!
53. Владислав Томашевич (tomvlad) 13.05.13 12:36
(52) Jetoo, еще раз повторяю. Обычное состояние базы - это минимум (а как идеал - отсутствие помеченных на удаление объектов). Пожалуйста, оставьте мне право самому планировать, с чем мне разбираться. Я уже понял - Вам эта обработка не подходит. Значит нужно взять и написать свою. В чем проблемы?
54. Марат Нафиков (Jetoo) 13.05.13 12:46
(53)Никто не говорит, что помеченных много. Проблема в том, что вы выкладываете обработку не способную решать реальные задачи, а тем кто делает вам замечания вы отвечаете "вам лучше не пользоваться этой обработкой, а написать свою". Ведь не все так же как я скрупулёзно проверяют код перед использованием чужих обработок.
55. Владислав Томашевич (tomvlad) 13.05.13 12:56
(54) Jetoo, на этом сайте выкладываются обработки предназначенные для бухгалтеров (отчеты, печатные формы, обработки заполнения ТЧ) и для программистов (администраторов). Эта обработка предназначена для второй категории. И предполагает наличие определенной квалификации и ответственности у того, кто решит ей воспользоваться.

Сайт infostart.ru позиционирует себя как магазин стройматериалов. Вы можете найти подходящие кирпичики, и из них уже собрать нечто готовое. Если кирпич для вас не подошел (не того фасона) - не нужно его покупать (скачивать). Не каждый кирпич годен для забивания гвоздей...

Не нашли ничего подходящего (трудно в это поверить)? Замечательно! Есть повод самому разобраться и написать свой, уникальный кирпич нужного фасона.
56. Марат Нафиков (Jetoo) 13.05.13 13:01
Удачи вам и вашим кирпичам!
57. Алексей Смирнов (Vextel) 05.06.13 22:09
Действительно обработка не до конца продумана :(
К примеру есть контрагент у контрагента есть банковский счёт. К примеру у одного контрагента есть куча банковских счетов для каждой организации. Эта обработка находит банковский счёт для одной организации, удаляет его и удаляет ссылки на него, т.е. удаляет полностью контрагента.
Так же верное замечание сделал человек, который сказал, что если в каком ли бо документе будет указан отвественный человек из организации, которую удаляем, то этот документ тоже будет удалён.
_Маша; NetLeo; BudkoT; +3 Ответить 1
58. Сергей Ерин (es3000) 12.07.13 01:52
На ЗУП 2.5.69.3 выдает ошибку:

{Форма.Форма.Форма(158)}: Поле объекта не обнаружено (ОбменДанными)
Объект.ОбменДанными.Загрузка = Истина;
59. Сергей Ерин (es3000) 12.07.13 02:13
61. Алекс Ю (AlexO) 24.03.14 14:56
(8) это скорей всего, вотэта обработка была:
http://infostart.ru/public/119960/
Она да, долго работает, и очищает только документы, без регистров.
62. Алекс Ю (AlexO) 24.03.14 15:18
(57) любая обработка по удалению по организации подразумевает, что организации ведутся ОТДЕЛЬНО 9собственно, за ради этого и удаляем "лишние" организации - чтобы физически разделить их, и так уже логически разделенные).
Если организации как-либо между собой пересекаются - все, универсальные обработки не подходят: тут нужная специальная обработка, настроенная под конкретную базу. А так как вариантов таких связей между базами - бесконечное множество, то и обработок подобных, узкоспециальных - тоже бесчисленное количество может быть.
(0) tomvlad, а <ОбъектНеНайден> корректно обрабатывает?
63. Ольга Николаевна (ron1) 16.08.14 00:23
64. Ольга Николаевна (ron1) 20.08.14 14:18
Делала ЗУП 2.5
Действительно, как писали выше, возникла проблема с банковским счетом. У обоих организаций был один и тот же банк - Сбербанк России.
В результате обработка пометила Банк, потом банковские счета обоих организаций, потом все платежки и ведомости по зарплате в том числе и той организации, которая остается в базе.
Но это не очень страшно. Главное они не удалились. Я сняла пометки и провела заново.
65. twcoth (mea07) 10.10.14 22:34
Обработка работает на ура! СПАСИБО АВТОРУ!
66. Максим Богословский (ulen) 11.01.16 14:31
У меня отрабатывает неправильно, удаляет все, по всем организациям, независимо от того помечена организация в списке или нет!!!
67. Денис Секацкий (bigden.ru) 05.06.16 14:26
(66) ulen, Для себя, экспериментально, определил следующий алгоритм работы с этой обработкой (в УПП)
1 убираем со всех обьектов признак удаления (ОБЯЗАТЕЛЬНО !!!)
2 количество итераций ставлю = 1
3 после прогона прохожусь по справочнику договоры и убираю признак Основной договор
4 дочищаю стандартной обработкой до полной очистки, убирая связи и т.д.
5 делаю бекап и перехожу к следующей организациии

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