Огромная база, учет в которой велся несколько лет. Раздутые справочники. Пользователи теряются при выборе элементов в них. Некоторые элементы использовались еще до переноса в новую программу. Представили? А теперь расслабьтесь!
Все программы содержат нормативно — справочную информацию. В одних базах ее много, в других — много до неприличия. Зачастую справочники информационной базы содержат избыточное количество элементов, некоторые из которых вообще не используются.
Когда же возникают эти «мусорные» элементы?
-
При переходе на новую программу. При переносе данных зачастую переносится вся нормативно — справочная информация и сведения об остатках. Причем в остатках ссылок на эти справочники может и не быть.
-
На этапе внедрения. Когда пользователи еще не привыкли работать в программе, они неизбежно станут делать ошибки. В том числе, вводить ненужные элементы в справочники системы.
Эта обработка станет незаменимым помощником администратора базы данных. Она быстро выполнит поиск элементов справочников, ссылок на которые нет, и пометит их для удаления. Позволяет работать как в обычном, так и в управляемом приложении.
Все, что Вам нужно сделать — запустить штатную процедуру удаления помеченных объектов.
К сожалению, сильно долго для больших справочников (а для других и использовать нет необходимости). Но нормально.
(1) можете попробовать(но быстродействие я не замерял) через «Сервис — Служебные — Групповая обработка документов и справочников» -> пометить справочник на удаление.
После удаляются неиспользуемые объекты. И снимается пометка удаления с оставшихся объектов.
(0) ИМХО очень неудобно выбирать нужный справочник прокручивая список мышкой.
Разве нельзя было сделать возможность поиска по через «Ctrl+F» ?
Игорь, если не нравится, разве нельзя нарисовать форму для себя?
(2) Точно знаю что быстрее не будет.
(4) я высказал только пожелания/критику. И не более. 🙂
А рисовать умею только на бумаге, увы :-/
(4) скачал обновленную обработку — Спасибо! 🙂
Замечания:
1. Список справочников лучше отсортировать
ЭлементыФормы.СписокСправочников.Значение.СортироватьПоПредставлению();
2. Для неиерархических справочников помеченные на удаление элементы тоже не надо проверять.
3. Конструкция
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
МассивСсылок.Добавить(Выборка.Ссылка);
КонецЦикла;
эквивалентна одному оператору:
МассивСсылок=Результат.Выгрузить().ВыгрузитьКолонку(«Ссылка»);
4. Не учитываются предопределенные элементы справочника. Их нельзя пометить или удалить.
5. Для эффективности поиска лучше
ТаблицаНеиспользуемых.Свернуть(«Ссылка»);
6. А также повторить запрос вне транзакции с добавленным условием
И » + ИмяСправочника + «.Ссылка НЕ В (&ТаблицаНеиспользуемых)
вместо поиска в цикле внутри транзакции.
(8) Александр, честно говоря эта обработка была написана на скорую руку за 15 минут. Более я ее использовать не планирую. Если есть желание, можно переписывать и оптимизировать, я не против.
Tom спасибо за обработку, немного подправила под свои нужды. Учла замечания maloi_a.
(10) Не хватает оптимизации в транзакции.
http://www.rapidshare.ru/944458
(9)Сделал под себя
подчиненные справочники из массива ссылок надо бы исключать, т.к. обычно пр пометке удаления владельца они тоже помечаются на удаление.
(12)Как раз не нужно. Если к примеру удаляем номенклатуру, то единицы измерения тоже надо удалять
Хорошая обработка, спасибо
Столкнулся с проблеммой — элемент справочника ВложенияЭлектронныхПисем не может не только удалить, но и пометить не дает, кричит «Недостаточно памяти», и поэтому не дает и выгрузку в УРИБе сделать, как удалить?
А можно еще выложить ссылки на «доработанный» вариант скрипта?
Ну дайте доработанный вариант скриптика!!!
Как всегда оказалось, что что-то общее и универсальное не подошло 🙁
У нас база перекочевала с 7.7 в 8.0, потом в 8.1, затем была смена юр. лиц. В итоге, за полгода работы из 28 тыс элементов номенклатуры явно половина не востребована.
Но, если задавать обработке поиск, но натыкаемся на два момента
1) спр-к единицы измерений, с которым связана ном-ра
2) регистр сведений «Ном-ра органихзаций», данные в котором «перекочевали» от предыдущего юр. лица 🙂
3) не используемые нигде спецификации, которые тоже надо «зачистить»
Ничего, зато сам прощупал (в очередной раз…) нашу базу. Написал коряво, но быстро и работающе. Жаль времени много уходит — приходится системе анализировать тип ссылок, в которых исп-ся тот или иной элемент…
Без ручного удаления штрих-кода номенклатура не удаляется. Как быть?
Проста Клёва
Хорошая вещь ,помогла в свое время, когда необходимо было обработать огромный справочник номенклатуры с половиной неиспользуемых элементов.
Люди, посоветуйте плз, стоит ли это скачивать? Нужно подчистить именно номенклатуру и только ее. Тут куча обработок, фиг поймешь, что нужно скачивать, т.к. если скачаешь не подходящую тебе обработку, потом придется флудить часами, восстанавливая потерянные очки 🙁
отличная обработка «Удаление неиспользуемых элементов справочников» очень помогла на стадии внедрения ББУ8, упустил момент воспользоваться подбной обработкой в ББУ 77 осуществил весь перенос со всей номенклатурой которой уже и в помине нет договорами контрагентами и т.п бухгалтера начали жужжать что мол много вего ненужного во и пришлось использовать старую добрую оработочку но уже в восмере КОРОЧЕ СПАСИБО!!!
(23) Вообще-то она никакого отношения к семерочной не имеет.
норм обработка
Работает, все нормуль
Держи плюсик
Помогла в чистке «загаженной» некорректными конвертациями бд ут 10.3, спасибо
Отличная обработка. Спасибо.
классаная штука +
Отличная обработка.
Как раз поставлена задача по чистке справочника.
Хорошая обработка.
Бухгалтерия поставила задачу удалить задвоенных сотрудников.
Пригодится в работе.
Скажите а на 8.2 работает нормально?
не помогло:( справочник контрагентов почистить не удалось, несмотря на наличие галки не учитывать наличие ссылки в подчиненных объектах:( увы
Если по позиции было движение. Но потом документы эти были помеченны на удаление. Удалит обработка эти позиции?
(36) Velliar, если на помеченный на удаление объект нет ссылок в информационной базе — то да.
(37) При попытке скачать обработку выдается сообщение Указанный файл не найден в базе. ?????
(38) Действительно, по неизвестной мне причине файл исчез. Заменил на новый, заодно обновил для использования в 8.3 без модальных вызовов.
(39) Спасибо! На сей раз скачать удалось. Правда сняли См и за неудачную попытку… Как там в этих случаях говорят: Сдох Максим да и фиг с ним! 🙂 Ещё раз спасибо!
Скачал, сейчас тестирую… Уже заметил следующее. В УПП и в ЗУП есть такой механизм, как личные счета сотрудников. Они хранятся в РС. В нем же есть ссылка на банк типа СправочникСсылка.Контрагенты. За счет этого в организациях, где много иногородних сотрудников, в контрагентах появляется большое число записей, ссылка на которые есть только из РС расчетных счетов сотрудников.
Обработка, понятное дело, все это добро мне радостно пометила на удаление. А не надо бы.
Может, какой-то механизм исключений придумать, чтоб каждый раз не снимать пометку с таких записей?
Спасибо за обработку. Было бы замечательно иметь возможность устанавливать фильтры.
Спасибо! Обработка очень пригодилась при переносе данных в другую конфигурацию.
при поиске в справочнике Контрагенты, не находит неиспользуемых, в используемых при этом находятся контрагенты, в которых показана ссылка на самого себя, с чем это может быть связано?
Отлично отработало на 1с:Хеликс
Поиск ссылок на объекты
и проверять все ссылки
Глобальный контекст (Global context)
НайтиПоСсылкам (FindByRef)
Синтаксис:
НайтиПоСсылкам(<СписокСсылок>)
Параметры:
<СписокСсылок> (обязательный)
Тип: Массив.
Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:
Тип: ТаблицаЗначений.
Возвращает ссылки на найденные объекты в виде ТаблицаЗначений.
Первая колонка — исходная ссылка.
Вторая колонка — ссылка на объект, если найденная ссылка соответствует объектной таблице или значение, олицетворяющее запись необъектной таблицы.
Третья колонка — объект метаданных, которому соответствуют данные в которых найдена ссылка.
Описание:
Осуществляет поиск ссылок на объекты, переданные в параметре <СписокСсылок>.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Поиск осуществляется только в тех данных, которые доступны в рамках текущего сеанса с учетом разделения (условное разделение учитывается).
Пример:
Ссылки = НайтиПомеченныеНаУдаление();
ТабСсылок = НайтиПоСсылкам(Ссылки);
Для Каждого Ссылка из ТабСсылок Цикл
Сообщить («» + СокрЛП(Ссылка[0]) + » » + СокрЛП(Ссылка[1]));
КонецЦикла;
Сделано качественно, скачал новую версию — добавил в нее открытие формы списка справочника по клику
Добрый день, при попытке удалить или пометить на удаление выдается сообщение «Метод объекта не обнаружен (ПолучитьОбъект)
(48) dunaev, приведите пожалуйста полный текст сообщения об ошибке.
(46) С учетом того, что этот метод ищет все ссылки, а в нашем случае нужна хотя бы одна, будет работать довольно долго.
В процедуре ВыполнитьПроверкуСправочника() ошибка — падает на иерархических справочниках без групп. Нужно так:
Если Метаданные.Справочники[ИмяСправочника].Иерархический
И Метаданные.Справочники[ИмяСправочника].ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
Запрос.Текст = Запрос.Текст + »
| И (НЕ » + ИмяСправочника + «.ЭтоГруппа)»;
КонецЕсли;
скиньте кому не жалко dubrovo111@mail.ru , спасибо