Удаление строк из ТЗ по условию #680238


#0 by bolobol
Доброго времени суток! Задачка тут возникла актуальностью своей поражая: НайтиПоСсылкам(...) возвращает ТЗ в которой третья колонка - объект метаданных, которому соответствуют данные в которых найдена ссылка. Я могу использовать только справочники и документы, как из ТЗ правильно удалить всё остальное? Как создать ТЗ уже без лишних данных, таких как запись регистра? Спасибо.
#1 by MKZM
Очистить?
#2 by MKZM
Нужная = Новый ТаблицаЗначений;
#3 by azernot
Передать ТЗ в запрос и поставить условие на вхождение объекта метаданных в массив нужных объектов метаданных, выполнить, выгрузить. Этот самый массив создать перебором метаданных нужных типов.
#4 by bolobol
3 + Таким образом, я понимаю, что просто указать для сравнения объект метаданных "Документ" и "Справочник" нереально даже запросом, да?
#5 by bolobol
Да, ещё вопрос: Такая конструкция не отработает ли быстрее, чем запрос: Даёт ли гарантию "Для каждого", что при удалении текущего/выбранного элемента коллекции внутри цикла - обход пройдёт по всем элементам? Не будет скачков как при прямом переборе, когда индексы меняются?
#6 by azernot
Гарантированно не даёт. Нужно формировать массив удаляемых, а потом отдельным циклом удалять. Что касается того, что быстрее - тебе и карты в руки, пробуй, замеряй.
#7 by hhhh
это и есть прямой перебор и индексы меняются однозначно.
#8 by bolobol
Запросом, к сожалению, а может - к счастью, не получается - "Тип не может быть выбран в запросе", а красивое и правильное решение в обход данной ошибки не придумалось. А подсказали мне такое решение: "Метаданные.Справочники.Содержит(МетаданныеИЗТЗ)" "Для каждого" - действительно оказалось прямым перебором по индексам, а не по указателям на следующий. Всем спасибо!
#9 by bolobol
А где гарантия, что вышеперечисленное - это _все_ ссылочные объекты?
#10 by bolobol
Упс... форум тупит)) Не туда
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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