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

0. Владислав Томашевич (tomvlad) 3599 16.02.09 10:18 Сейчас в теме
Огромная база, учет в которой велся несколько лет. Раздутые справочники. Пользователи теряются при выборе. Некоторые элементы использовались еще до переноса в новую программу. Представили? А теперь расслабьтесь!

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

Комментарии
1. Сергей Кучеров (СергейКа) 613 16.02.09 10:18 Сейчас в теме
К сожалению, сильно долго для больших справочников (а для других и использовать нет необходимости). Но нормально.
2. Igоr Sаulеviсh (gutentag) 253 17.02.09 16:38 Сейчас в теме
(1) можете попробовать(но быстродействие я не замерял) через "Сервис - Служебные - Групповая обработка документов и справочников" -> пометить справочник на удаление.
После удаляются неиспользуемые объекты. И снимается пометка удаления с оставшихся объектов.
5. Сергей Кучеров (СергейКа) 613 19.02.09 14:12 Сейчас в теме
(2) Точно знаю что быстрее не будет.
3. Igоr Sаulеviсh (gutentag) 253 18.02.09 10:54 Сейчас в теме
(0) ИМХО очень неудобно выбирать нужный справочник прокручивая список мышкой.
Разве нельзя было сделать возможность поиска по через "Ctrl+F" ?
4. Tom (tomvlad) 18.02.09 13:28 Сейчас в теме
Игорь, если не нравится, разве нельзя нарисовать форму для себя?
6. Igоr Sаulеviсh (gutentag) 253 19.02.09 14:24 Сейчас в теме
(4) я высказал только пожелания/критику. И не более. :)
А рисовать умею только на бумаге, увы :-/
7. Igоr Sаulеviсh (gutentag) 253 19.02.09 14:38 Сейчас в теме
(4) скачал обновленную обработку - Спасибо! :)
spetzpozh; h00m; +2 Ответить
8. Alexandr Maloi (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) 955 26.02.09 07:50 Сейчас в теме
Tom спасибо за обработку, немного подправила под свои нужды. Учла замечания maloi_a.

http://www.rapidshare.ru/938716
11. Alexandr Maloi (maloi_a) 28.02.09 09:54 Сейчас в теме
(10) Не хватает оптимизации в транзакции.
(9)Сделал под себя
http://www.rapidshare.ru/944458
12. Grig (grig) 02.03.09 22:15 Сейчас в теме
подчиненные справочники из массива ссылок надо бы исключать, т.к. обычно пр пометке удаления владельца они тоже помечаются на удаление.
13. Александр Доровских (Requiem) 31 29.04.09 12:34 Сейчас в теме
(12)Как раз не нужно. Если к примеру удаляем номенклатуру, то единицы измерения тоже надо удалять
14. Валерий Емельянов (ValeraEm) 132 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) 4 22.09.11 22:06 Сейчас в теме
отличная обработка "Удаление неиспользуемых элементов справочников" очень помогла на стадии внедрения ББУ8, упустил момент воспользоваться подбной обработкой в ББУ 77 осуществил весь перенос со всей номенклатурой которой уже и в помине нет договорами контрагентами и т.п бухгалтера начали жужжать что мол много вего ненужного во и пришлось использовать старую добрую оработочку но уже в восмере КОРОЧЕ СПАСИБО!!!
24. Владислав Томашевич (tomvlad) 3599 23.09.11 08:26 Сейчас в теме
(23) Вообще-то она никакого отношения к семерочной не имеет.
25. Алексей Лейт (AlekseiLeit) 10 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) 8 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) 9 21.11.12 09:40 Сейчас в теме
не помогло:( справочник контрагентов почистить не удалось, несмотря на наличие галки не учитывать наличие ссылки в подчиненных объектах:( увы
36. Василий (Velliar) 20.01.14 12:30 Сейчас в теме
Если по позиции было движение. Но потом документы эти были помеченны на удаление. Удалит обработка эти позиции?
37. Владислав Томашевич (tomvlad) 3599 20.01.14 12:50 Сейчас в теме
(36) Velliar, если на помеченный на удаление объект нет ссылок в информационной базе - то да.
38. Владимир (vladir) 107 02.04.14 10:10 Сейчас в теме
(37) При попытке скачать обработку выдается сообщение Указанный файл не найден в базе. ?????
39. Владислав Томашевич (tomvlad) 3599 02.04.14 10:47 Сейчас в теме
(38) Действительно, по неизвестной мне причине файл исчез. Заменил на новый, заодно обновил для использования в 8.3 без модальных вызовов.
40. Владимир (vladir) 107 02.04.14 11:04 Сейчас в теме
(39) Спасибо! На сей раз скачать удалось. Правда сняли См и за неудачную попытку... Как там в этих случаях говорят: Сдох Максим да и фиг с ним! :) Ещё раз спасибо!
41. Vladimir Polyakov (spectre1978) 40 02.05.14 12:01 Сейчас в теме
Скачал, сейчас тестирую... Уже заметил следующее. В УПП и в ЗУП есть такой механизм, как личные счета сотрудников. Они хранятся в РС. В нем же есть ссылка на банк типа СправочникСсылка.Контрагенты. За счет этого в организациях, где много иногородних сотрудников, в контрагентах появляется большое число записей, ссылка на которые есть только из РС расчетных счетов сотрудников.

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

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

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

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

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

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

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

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

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

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

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

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

Если Метаданные.Справочники[ИмяСправочника].Иерархический
И Метаданные.Справочники[ИмяСправочника].ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
Запрос.Текст = Запрос.Текст + "
| И (НЕ " + ИмяСправочника + ".ЭтоГруппа)";
КонецЕсли;
Оставьте свое сообщение