Имя: Пароль:
1C
1C 7.7
v7: УстановитьФильтр В ИндексированнойТаблице
0 aleknek
 
25.08.11
12:04
Решил разобраться и работой индексированных таблиц, но что то не могу понять работу метода УстановитьФильтр(КлючМин, КлючМакс, [Индекс = ""], [чТолькоУникальные = 0], [чИнверсия = 0]), после установки фильтра и выгрузке новой таблицы значений, возвращается только одна строка, хотя по устанавливаемым значениям фильтра, значений должно быть несколько, я так подозреваю, что где то перемудрил, с КлючМин, КлючМакс. Подскажите в чем может быть проблема.
Код:

Функция ОтборПоИндексированнойТаблице(ТЗДляПоиска, Отбор, НомерВызова)
     
   тзИндТ.Очистить();
   тзИндТ.Загрузить(ТЗДляПоиска);
   
   СтрВыражение = "";
   Для н = 1 По Отбор.РазмерСписка() Цикл
       
       ИмяКолонки = "";
       Отбор.ПолучитьЗначение(н, ИмяКолонки);            
       
       СтрВыражение = ?(ПустаяСтрока(СтрВыражение) = 1, ИмяКолонки,    СтрВыражение +","+ ИмяКолонки);        
   КонецЦикла;
   
   тзИндТ.ДобавитьИндекс("Отбор", СтрВыражение ,0);
   
   тзВрем = СоздатьОбъект("ТаблицаЗначений");
   тзИндТ.УстановитьФильтр(, Отбор, "Отбор",1);
   тзИндТ.Выгрузить(тзВрем, "Отбор");
   
   Возврат тзВрем;
   
КонецФункции // ОтборПоИндексированнойТаблице()
1 Mikeware
 
25.08.11
12:12
ничего не понял.
2 aleknek
 
25.08.11
12:15
после выполнения кода в строке
тзИндТ.Выгрузить(тзВрем, "Отбор"),
на выходе должна быть ТЗВрем с несколькими значениями, а имею только одну строку
3 aleknek
 
25.08.11
12:16
(2)тзИндТ это индексированная таблица
4 aleknek
 
25.08.11
12:21
Переписал немного код:

тзИндТ.Загрузить(ТЗДляПоиска);
тзИндТ.ДобавитьИндекс("Отбор", *Фирма, *Контрагент, *Договор,0);    
тзВрем = СоздатьОбъект("ТаблицаЗначений");
тзИндТ.УстановитьФильтр(, Отбор, "Отбор",1);
тзИндТ.Выгрузить(тзВрем, "Отбор");
5 Mikeware
 
25.08.11
12:22
Ну, во-первыз, у тебя только уникальные в фильтре включены
6 Ёпрст
 
25.08.11
12:22
(0) нам отсюда не видно, что ты в Отбор положил и в каком порядке.
7 DCKiller
 
25.08.11
12:29
Пользуясь случаем, что все главные спецы по ИТЗ тут :), тож хочу спросить: как группировать ИТЗ по колонке типа "Счет"?
Пытаюсь так
ИТЗ.Группировать("Счет: *&Счет"), а групп по колонке нет (хотя счет 100% группа)
8 aleknek
 
25.08.11
12:29
(5) таки да, проблема была в этом. Только не совсем понятна эта запись
чТолькоУникальные - тип: Число. Если 1 - то в выборку попадут только строки с уникальным значением ключа.
Что имеется ввиду только с уникальным значением ключа?
9 Ёпрст
 
25.08.11
12:31
(8)

есть 2 строки с 3 колонками:

вася федф 100
вася федя 200

ты строишь индекс по первым 2 колонкам, индекс у этих 2-х строк будет одинаковый..
10 Ёпрст
 
25.08.11
12:31
+9 с уникальным значением ключа будет только 1 строка - вася федя..
11 aleknek
 
25.08.11
12:34
(10) понял, всем спасибо