Можно узнать есть ли ссылки на объект (кроме НайтиПоСсылкам)? #277157


#0 by PowerBoy
Можно узнать есть ли ссылки на объект (кроме НайтиПоСсылкам)? Функция НайтиПоСсылкам работает медленно. А мне и не надо все ссылки, а только узнать есть ссылки или нет.
#1 by Волшебник
Можно обойти метаданные в цикле, проверяя тип реквизитов и делая запросы "ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ ....". Как только будет найдена хоть одна запись, цикл прерывать. Должно быть быстрее, чем НайтиПоСсылкам.
#2 by PowerBoy
То есть встроенных механизмов нет? Если я всё переберу - то я и получу функцию НайтиПоСсылкам. Что-то лень мне по всем метаданным делать поиск.
#3 by Леха Дум
....так вы и есть за меня будете? © из мультика
#4 by Волшебник
Фишка в том, что запрос ВЫБРАТЬ ПЕРВЫЕ 1 находит первую запись, а не все. И в том, что как только запись найдена, цикл по метаданным прекращается.
#5 by FarFar
Причем, ты можешь искать не тупо по всем метаданным, а сначала по наиболее вероятным.
#6 by PowerBoy
Сделаю сначала поиск по регистру бухгалтерии (Субконто). Если записей нет - буду юзать НайтиПоСсылкам.
#7 by Said_We
А что-то думал что ВЫБРАТЬ ПЕРВЫЕ 1 делает всегда сначала выбор всех, а потом берет только первую. Там же может быть сортировка всякая. И кто его знает какая из записей окажется в итоге первой. В 1С конечно может быт и не так...
#8 by PowerBoy
Все доделал. Всем спасибо. Кому интересно - смотрите: Обработка служит для удаления неиспользуемой номенклатуры, т.е. такой номенклатуры на которую нет ссылок из других объектов. Предназначена для типовых конфигураций Бухгалтерии и УПП.
#9 by DrWatson
Возможно так же нужно удалять элементы подчиненных справочников. Например, единицы измерений.
#10 by Said_We
Ошибался... FROM WHERE GROUP BY HAVING SELECT ORDER BY
#11 by PR
Это к наверное. Это что вообще, порядок выполнения операторов в запросе?
#12 by Said_We
Да это к . Я ошибся еще раз. :-))) Да это порядок выполнения операторов...
#13 by yalex
Неплохо. Сделай для всех метаданных такую фишку. Вот только как быть с ?
#14 by НЕА123
"ВЫБРАТЬ ПЕРВЫЕ 1" даст ускорение, но в документации сказано, что "ВЫБРАТЬ ПЕРВЫЕ" отрабатывает в последнюю очередь. Или = Истина?
#15 by DrWatson
Легко провести эксперимент: убрать ПЕРВЫЕ 1 и засечь время. Ждём результатов сравнения :)
#16 by PowerBoy
Сейчас доработаю для подчиненных справочников
#17 by Ferz
SQL Plus доработал бы былобы приятно посмотреть на реальзацию в SQL
#18 by Ferz
данного алгоритма
#19 by PowerBoy
Работаю пока на 8.0, а SQLPlus только для 8.1.
#20 by PowerBoy
Решил для подчиненных справочников пока не делать. Смысл в том, что если пользователь уже и для подчин.справочников набил инф-цию то вероятность, что эта номенклатура используется очень высокая.
#21 by DrWatson
Так не поиск надо делать, а удаление
#22 by PowerBoy
Элементы у которых есть подчиненные не будут удалены.
#23 by DrWatson
А ну да, точно. А что бывает номенклатура без единиц измерений?
#24 by PowerBoy
Справочник единиц измерений не является подчиненным номенклатуре. Это элемент номенклатуры ссылается на ед.измерения, а не наоборот.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С