0. tomvlad 3679 16.02.09 10:18 Сейчас в теме

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

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

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

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

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

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

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

http://www.rapidshare.ru/938716
11. maloi_a 28.02.09 09:54 Сейчас в теме
(10) Не хватает оптимизации в транзакции.
(9)Сделал под себя
http://www.rapidshare.ru/944458
12. grig 02.03.09 22:15 Сейчас в теме
подчиненные справочники из массива ссылок надо бы исключать, т.к. обычно пр пометке удаления владельца они тоже помечаются на удаление.
13. Requiem 33 29.04.09 12:34 Сейчас в теме
(12)Как раз не нужно. Если к примеру удаляем номенклатуру, то единицы измерения тоже надо удалять
14. ValeraEm 139 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. balabani111 19.09.11 11:22 Сейчас в теме
21. Senator_I 19.09.11 14:45 Сейчас в теме
Хорошая вещь ,помогла в свое время, когда необходимо было обработать огромный справочник номенклатуры с половиной неиспользуемых элементов.
22. WildFire 20.09.11 11:29 Сейчас в теме
Люди, посоветуйте плз, стоит ли это скачивать? Нужно подчистить именно номенклатуру и только ее. Тут куча обработок, фиг поймешь, что нужно скачивать, т.к. если скачаешь не подходящую тебе обработку, потом придется флудить часами, восстанавливая потерянные очки :(
23. utia38 4 22.09.11 22:06 Сейчас в теме
отличная обработка "Удаление неиспользуемых элементов справочников" очень помогла на стадии внедрения ББУ8, упустил момент воспользоваться подбной обработкой в ББУ 77 осуществил весь перенос со всей номенклатурой которой уже и в помине нет договорами контрагентами и т.п бухгалтера начали жужжать что мол много вего ненужного во и пришлось использовать старую добрую оработочку но уже в восмере КОРОЧЕ СПАСИБО!!!
24. tomvlad 3679 23.09.11 08:26 Сейчас в теме
(23) Вообще-то она никакого отношения к семерочной не имеет.
25. AlekseiLeit 9 14.11.11 16:44 Сейчас в теме
26. post279 21.11.11 09:14 Сейчас в теме
27. Raminus 30.11.11 15:19 Сейчас в теме
28. Energen 01.01.12 10:33 Сейчас в теме
Помогла в чистке "загаженной" некорректными конвертациями бд ут 10.3, спасибо
29. tmaker 02.01.12 11:24 Сейчас в теме
Отличная обработка. Спасибо.
30. kkk 08.01.12 22:37 Сейчас в теме
31. Sean1s 8 02.02.12 07:05 Сейчас в теме
Отличная обработка.
Как раз поставлена задача по чистке справочника.
33. andru_dv 22.03.12 15:48 Сейчас в теме
Хорошая обработка.
Бухгалтерия поставила задачу удалить задвоенных сотрудников.
Пригодится в работе.
34. 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 3679 20.01.14 12:50 Сейчас в теме
(36) Velliar, если на помеченный на удаление объект нет ссылок в информационной базе - то да.
38. vladir 111 02.04.14 10:10 Сейчас в теме
(37) При попытке скачать обработку выдается сообщение Указанный файл не найден в базе. ?????
39. tomvlad 3679 02.04.14 10:47 Сейчас в теме
(38) Действительно, по неизвестной мне причине файл исчез. Заменил на новый, заодно обновил для использования в 8.3 без модальных вызовов.
40. vladir 111 02.04.14 11:04 Сейчас в теме
(39) Спасибо! На сей раз скачать удалось. Правда сняли См и за неудачную попытку... Как там в этих случаях говорят: Сдох Максим да и фиг с ним! :) Ещё раз спасибо!
41. spectre1978 49 02.05.14 12:01 Сейчас в теме
Скачал, сейчас тестирую... Уже заметил следующее. В УПП и в ЗУП есть такой механизм, как личные счета сотрудников. Они хранятся в РС. В нем же есть ссылка на банк типа СправочникСсылка.Контрагенты. За счет этого в организациях, где много иногородних сотрудников, в контрагентах появляется большое число записей, ссылка на которые есть только из РС расчетных счетов сотрудников.

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

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

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

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

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

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

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

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

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

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

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

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

Если Метаданные.Справочники[ИмяСправочника].Иерархический
И Метаданные.Справочники[ИмяСправочника].ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
Запрос.Текст = Запрос.Текст + "
| И (НЕ " + ИмяСправочника + ".ЭтоГруппа)";
КонецЕсли;
52. tabezi65 31.01.19 18:37 Сейчас в теме
скиньте кому не жалко dubrovo111@mail.ru , спасибо
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)