Имя: Пароль:
1C
1С v8
Удаление строк из ТЗ по условию
0 bolobol
 
10.09.13
18:31
Доброго времени суток!

Задачка тут возникла актуальностью своей поражая:

НайтиПоСсылкам(...) возвращает ТЗ в которой третья колонка - объект метаданных, которому соответствуют данные в которых найдена ссылка.

Я могу использовать только справочники и документы, как из ТЗ правильно удалить всё остальное?

Как создать ТЗ уже без лишних данных, таких как запись регистра?

Спасибо.
1 MKZM
 
10.09.13
18:33
Очистить()?
2 MKZM
 
10.09.13
18:34
Нужная = Новый ТаблицаЗначений;
3 azernot
 
10.09.13
18:38
Передать ТЗ в запрос и поставить условие на вхождение объекта метаданных в массив нужных объектов метаданных, выполнить, выгрузить. Этот самый массив создать перебором метаданных нужных типов.
4 bolobol
 
10.09.13
18:42
3 +
Таким образом, я понимаю, что просто указать для сравнения объект метаданных "Документ" и "Справочник" нереально даже запросом, да?
5 bolobol
 
10.09.13
18:49
Да, ещё вопрос:
Такая конструкция не отработает ли быстрее, чем запрос:

Для каждого СтрЭл из ТЗ Цикл
   Если Лев(СтрЭл[3], 3) <> "Спр" И Лев(СтрЭл[3], 3) <> "Док" Тогда
   ТЗ.Удалить(СтрЭл);
КонецЦикла;

Даёт ли гарантию "Для каждого", что при удалении текущего/выбранного элемента коллекции внутри цикла - обход пройдёт по всем элементам? Не будет скачков как при прямом переборе, когда индексы меняются?
6 azernot
 
10.09.13
18:53
(5) Гарантированно не даёт. Нужно формировать массив удаляемых, а потом отдельным циклом удалять.
Что касается того, что быстрее - тебе и карты в руки, пробуй, замеряй.
7 hhhh
 
10.09.13
21:52
(5) это и есть прямой перебор и индексы меняются однозначно.
8 bolobol
 
11.09.13
15:37
Запросом, к сожалению, а может - к счастью, не получается - "Тип не может быть выбран в запросе", а красивое и правильное решение в обход данной ошибки не придумалось.

А подсказали мне такое решение: "Метаданные.Справочники.Содержит(МетаданныеИЗТЗ)"

"Для каждого" - действительно оказалось прямым перебором по индексам, а не по указателям на следующий.

Всем спасибо!
9 bolobol
 
12.09.13
13:14
А где гарантия, что вышеперечисленное - это _все_ ссылочные объекты?
10 bolobol
 
12.09.13
13:15
Упс... форум тупит)) Не туда