gifts2017

Как быстро удалить неиспользуемые элементы справочников (в управляемом и обычном приложении)?

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

Огромная база, учет в которой велся несколько лет. Раздутые справочники.  Пользователи теряются при выборе. Некоторые элементы использовались еще до переноса  в новую программу. Представили? А теперь расслабьтесь!

Огромная база, учет в которой велся несколько лет. Раздутые справочники. Пользователи теряются при выборе элементов в них. Некоторые элементы использовались еще до переноса в новую программу. Представили? А теперь расслабьтесь!

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

Когда же возникают эти «мусорные» элементы?

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

  2. На этапе внедрения. Когда пользователи еще не привыкли работать в программе, они неизбежно станут делать ошибки. В том числе, вводить ненужные элементы в справочники системы.

Эта обработка станет незаменимым помощником администратора базы данных. Она быстро выполнит поиск элементов справочников, ссылок на которые нет, и пометит их для удаления. Позволяет работать как в обычном, так и в управляемом приложении.

Все, что Вам нужно сделать — запустить штатную процедуру удаления помеченных объектов.

 

 

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

Наименование Файл Версия Размер Кол. Скачив.
Удаление неиспользуемых элементов справочников
.epf 25,17Kb
02.04.14
1712
.epf 25,17Kb 1712 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. Сергей Кучеров (СергейКа) 16.02.09 10:18
К сожалению, сильно долго для больших справочников (а для других и использовать нет необходимости). Но нормально.
2. Igоr Sаulеviсh (gutentag) 17.02.09 16:38
(1) можете попробовать(но быстродействие я не замерял) через "Сервис - Служебные - Групповая обработка документов и справочников" -> пометить справочник на удаление.
После удаляются неиспользуемые объекты. И снимается пометка удаления с оставшихся объектов.
3. Igоr Sаulеviсh (gutentag) 18.02.09 10:54
(0) ИМХО очень неудобно выбирать нужный справочник прокручивая список мышкой.
Разве нельзя было сделать возможность поиска по через "Ctrl+F" ?
4. Tom (tomvlad) 18.02.09 13:28
Игорь, если не нравится, разве нельзя нарисовать форму для себя?
5. Сергей Кучеров (СергейКа) 19.02.09 14:12
(2) Точно знаю что быстрее не будет.
6. Igоr Sаulеviсh (gutentag) 19.02.09 14:24
(4) я высказал только пожелания/критику. И не более. :)
А рисовать умею только на бумаге, увы :-/
7. Igоr Sаulеviсh (gutentag) 19.02.09 14:38
(4) скачал обновленную обработку - Спасибо! :)
spetzpozh; h00m; +2 Ответить
8. Alexandr (maloi_a) 22.02.09 09:48
Замечания:
1. Список справочников лучше отсортировать
ЭлементыФормы.СписокСправочников.Значение.СортироватьПоПредставлению();
2. Для неиерархических справочников помеченные на удаление элементы тоже не надо проверять.
3. Конструкция
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл

МассивСсылок.Добавить(Выборка.Ссылка);

КонецЦикла;
эквивалентна одному оператору:
МассивСсылок=Результат.Выгрузить().ВыгрузитьКолонку("Ссылка");
4. Не учитываются предопределенные элементы справочника. Их нельзя пометить или удалить.
5. Для эффективности поиска лучше
ТаблицаНеиспользуемых.Свернуть("Ссылка");
6. А также повторить запрос вне транзакции с добавленным условием
И " + ИмяСправочника + ".Ссылка НЕ В (&ТаблицаНеиспользуемых)

вместо поиска в цикле внутри транзакции.
9. Tom (tomvlad) 22.02.09 14:42
(8) Александр, честно говоря эта обработка была написана на скорую руку за 15 минут. Более я ее использовать не планирую. Если есть желание, можно переписывать и оптимизировать, я не против.
10. Виктория Коршанова (Chif13) 26.02.09 07:50
Tom спасибо за обработку, немного подправила под свои нужды. Учла замечания maloi_a.

http://www.rapidshare.ru/938716
11. Alexandr (maloi_a) 28.02.09 09:54
(10) Не хватает оптимизации в транзакции.
(9)Сделал под себя
http://www.rapidshare.ru/944458
12. Grig (grig) 02.03.09 22:15
подчиненные справочники из массива ссылок надо бы исключать, т.к. обычно пр пометке удаления владельца они тоже помечаются на удаление.
13. Александр Доровских (Requiem) 29.04.09 12:34
(12)Как раз не нужно. Если к примеру удаляем номенклатуру, то единицы измерения тоже надо удалять
14. Валерий Емельянов (ValeraEm) 07.07.09 12:44
Хорошая обработка, спасибо
15. Николай (NickProv) 15.07.09 17:28
Столкнулся с проблеммой - элемент справочника ВложенияЭлектронныхПисем не может не только удалить, но и пометить не дает, кричит "Недостаточно памяти", и поэтому не дает и выгрузку в УРИБе сделать, как удалить?
16. Романов Константин (romanovkv) 07.09.09 11:58
А можно еще выложить ссылки на "доработанный" вариант скрипта?
17. Романов Константин (romanovkv) 14.09.09 13:00
Ну дайте доработанный вариант скриптика!!!
18. Станислав Патырило (wondermaker) 25.12.09 17:16
Как всегда оказалось, что что-то общее и универсальное не подошло :(
У нас база перекочевала с 7.7 в 8.0, потом в 8.1, затем была смена юр. лиц. В итоге, за полгода работы из 28 тыс элементов номенклатуры явно половина не востребована.

Но, если задавать обработке поиск, но натыкаемся на два момента
1) спр-к единицы измерений, с которым связана ном-ра
2) регистр сведений "Ном-ра органихзаций", данные в котором "перекочевали" от предыдущего юр. лица :)
3) не используемые нигде спецификации, которые тоже надо "зачистить"

Ничего, зато сам прощупал (в очередной раз...) нашу базу. Написал коряво, но быстро и работающе. Жаль времени много уходит - приходится системе анализировать тип ссылок, в которых исп-ся тот или иной элемент...
19. Евгений Смит (demiris) 10.11.10 12:34
Без ручного удаления штрих-кода номенклатура не удаляется. Как быть?
20. Samir Omarov (balabani111) 19.09.11 11:22
21. Дмитрий (Senator_I) 19.09.11 14:45
Хорошая вещь ,помогла в свое время, когда необходимо было обработать огромный справочник номенклатуры с половиной неиспользуемых элементов.
22. Serge Popoff (WildFire) 20.09.11 11:29
Люди, посоветуйте плз, стоит ли это скачивать? Нужно подчистить именно номенклатуру и только ее. Тут куча обработок, фиг поймешь, что нужно скачивать, т.к. если скачаешь не подходящую тебе обработку, потом придется флудить часами, восстанавливая потерянные очки :(
23. utia utia (utia38) 22.09.11 22:06
отличная обработка "Удаление неиспользуемых элементов справочников" очень помогла на стадии внедрения ББУ8, упустил момент воспользоваться подбной обработкой в ББУ 77 осуществил весь перенос со всей номенклатурой которой уже и в помине нет договорами контрагентами и т.п бухгалтера начали жужжать что мол много вего ненужного во и пришлось использовать старую добрую оработочку но уже в восмере КОРОЧЕ СПАСИБО!!!
24. Владислав Томашевич (tomvlad) 23.09.11 08:26
(23) Вообще-то она никакого отношения к семерочной не имеет.
25. Алексей Лейт (AlekseiLeit) 14.11.11 16:44
26. Сергей Жестовский (post279) 21.11.11 09:14
27. Роман (Raminus) 30.11.11 15:19
28. Energen Energen (Energen) 01.01.12 10:33
Помогла в чистке "загаженной" некорректными конвертациями бд ут 10.3, спасибо
29. Игорь Кириллов (tmaker) 02.01.12 11:24
Отличная обработка. Спасибо.
30. Маша Мишина (kkk) 08.01.12 22:37
31. Sergey Anisimov (Sean1s) 02.02.12 07:05
Отличная обработка.
Как раз поставлена задача по чистке справочника.
33. Андрей (andru_dv) 22.03.12 15:48
Хорошая обработка.
Бухгалтерия поставила задачу удалить задвоенных сотрудников.
Пригодится в работе.
34. BagIro4ka (BagА) 12.07.12 11:14
Скажите а на 8.2 работает нормально?
35. Лера (Lerusena) 21.11.12 09:40
не помогло:( справочник контрагентов почистить не удалось, несмотря на наличие галки не учитывать наличие ссылки в подчиненных объектах:( увы
36. Василий (Velliar) 20.01.14 12:30
Если по позиции было движение. Но потом документы эти были помеченны на удаление. Удалит обработка эти позиции?
37. Владислав Томашевич (tomvlad) 20.01.14 12:50
(36) Velliar, если на помеченный на удаление объект нет ссылок в информационной базе - то да.
38. Владимир (vladir) 02.04.14 10:10
(37) tomvlad, При попытке скачать обработку выдается сообщение Указанный файл не найден в базе. ?????
39. Владислав Томашевич (tomvlad) 02.04.14 10:47
(38) Действительно, по неизвестной мне причине файл исчез. Заменил на новый, заодно обновил для использования в 8.3 без модальных вызовов.
40. Владимир (vladir) 02.04.14 11:04
(39) tomvlad, Спасибо! На сей раз скачать удалось. Правда сняли См и за неудачную попытку... Как там в этих случаях говорят: Сдох Максим да и фиг с ним! :) Ещё раз спасибо!
41. Vladimir Polyakov (spectre1978) 02.05.14 12:01
Скачал, сейчас тестирую... Уже заметил следующее. В УПП и в ЗУП есть такой механизм, как личные счета сотрудников. Они хранятся в РС. В нем же есть ссылка на банк типа СправочникСсылка.Контрагенты. За счет этого в организациях, где много иногородних сотрудников, в контрагентах появляется большое число записей, ссылка на которые есть только из РС расчетных счетов сотрудников.

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

Может, какой-то механизм исключений придумать, чтоб каждый раз не снимать пометку с таких записей?
42. юрий гулидов (gull22) 24.06.14 11:34
Спасибо за обработку. Было бы замечательно иметь возможность устанавливать фильтры.
43. Владимир Клименко (KliMich) 23.08.14 07:30
Спасибо! Обработка очень пригодилась при переносе данных в другую конфигурацию.
44. NtS (NtS) 12.10.14 23:48
при поиске в справочнике Контрагенты, не находит неиспользуемых, в используемых при этом находятся контрагенты, в которых показана ссылка на самого себя, с чем это может быть связано?
45. юрий гулидов (gull22) 29.12.14 13:05
Отлично отработало на 1с:Хеликс
46. MaxxiMiliSan (MaxxiMiliSan) 29.12.14 13:07
Поиск ссылок на объекты
и проверять все ссылки

Глобальный контекст (Global context)
НайтиПоСсылкам (FindByRef)
Синтаксис:

НайтиПоСсылкам(<СписокСсылок>)
Параметры:

<СписокСсылок> (обязательный)

Тип: Массив.
Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:

Тип: ТаблицаЗначений.
Возвращает ссылки на найденные объекты в виде ТаблицаЗначений.
Первая колонка - исходная ссылка.
Вторая колонка - ссылка на объект, если найденная ссылка соответствует объектной таблице или значение, олицетворяющее запись необъектной таблицы.
Третья колонка - объект метаданных, которому соответствуют данные в которых найдена ссылка.
Описание:

Осуществляет поиск ссылок на объекты, переданные в параметре <СписокСсылок>.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Поиск осуществляется только в тех данных, которые доступны в рамках текущего сеанса с учетом разделения (условное разделение учитывается).
Пример:

Ссылки = НайтиПомеченныеНаУдаление();
ТабСсылок = НайтиПоСсылкам(Ссылки);
Для Каждого Ссылка из ТабСсылок Цикл
Сообщить ("" + СокрЛП(Ссылка[0]) + " " + СокрЛП(Ссылка[1]));
КонецЦикла;
47. Александр Крынецкий (echo77) 07.11.15 15:50
Сделано качественно, скачал новую версию - добавил в нее открытие формы списка справочника по клику
48. Владимир Дунаев (dunaev) 10.11.16 13:28
Добрый день, при попытке удалить или пометить на удаление выдается сообщение "Метод объекта не обнаружен (ПолучитьОбъект)
49. Владислав Томашевич (tomvlad) 10.11.16 13:50
(48) dunaev, приведите пожалуйста полный текст сообщения об ошибке.
50. Александр Кутин (Aprobator) 10.11.16 14:03
(46) С учетом того, что этот метод ищет все ссылки, а в нашем случае нужна хотя бы одна, будет работать довольно долго.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа