Имя: Пароль:
1C
1С v8
Программирование 1c v8
,
0 KizerSoze
 
14.07.12
17:16
Здравствуйте.
Как отфильтровать таблицу значений (ТЗ) в модуле?
Если это делать через "НайтиСтроки" то в результате возвращается массив со строками таблицы значений, который приходится с использованием циклов преобразовывать в ТЗ, что очень неэффективно.
Можно провести фильтрацию ТЗ без изменения типа?
1 Maniac
 
14.07.12
17:17
запроом
2 Rie
 
14.07.12
17:24
(0) А зачем цикл?
ОтфильтрованнаяТЗ = ИсходнаяТЗ.Выгрузить(ИсходнаяТЗ.НайтиСтроки(Фильтр));
3 KizerSoze
 
14.07.12
17:25
ТЗ, созданная в модуле, ведь не отображается в конструкторе запроса? Или это можно как-то исправить?
4 KizerSoze
 
14.07.12
17:26
Сейчас проверю вариант Rie
5 ЛЮС
 
14.07.12
17:26
СтрокиОтбора = ТЗ.НайтиСтроки(Отбор);
ТЗ = ТЗ.Скопировать(СтрокиОтбора);

И даже так:
ТЗ = ТЗ.Скопировать(Отбор);

(2) Выгрузить - метода ТЧ, а не ТЗ.
6 Rie
 
14.07.12
17:27
(3) Если очень захотеть - то отобразится :-)
7 Rie
 
14.07.12
17:27
(5) Верно. Скопировать()
8 izekia
 
14.07.12
17:28
(1) чем страдаешь?
9 KizerSoze
 
14.07.12
17:33
Страдаю пятиминутной продолжительностью формирования отчета. Ищу пути повышения эффективности.
10 ЛЮС
 
14.07.12
17:37
(9) ты замер производительности смотрел? А то причесывание различных отборов вне запроса, обычно имеют нулевую эффективность. Надо с текста запроса начинать, использовать параметры таблиц по максимуму, виртуальные таблицы.
11 KizerSoze
 
14.07.12
17:46
(10) Признаться, я использовал только секундомер мобильника.
У меня получилась "ТЗ = ТЗ.Скопировать(Отбор)".
Отчет у меня без использования СКД, поэтому так или иначе приходится прочесывать строки. Мне нужны промежуточные фильтрации, чтобы подсчитывать подитог "групповых" строк.
12 KizerSoze
 
14.07.12
17:47
Спасибо всем Вам большое.
13 ЛЮС
 
14.07.12
18:17
(11) С секундомером это сурово, по-челябински.
Открой для себя инструмент замера производительности от 1С: Отладка - Замер производительности. Как раз обычный отчет проще анализировать.
14 МихаилМ
 
14.07.12
19:39
используйте скд