Имя: Пароль:
1C
1C 7.7
v7: Работа с ИТЗ
0 Чел
 
13.08.14
19:23
Продолжение темы УстановитьФильтр В ИндексированнойТаблице
Есть такой код:

// тут код с текстом запроса и созданием объекта типа ИндексированнаяТаблица

Запрос3.ВыполнитьИнструкцию(ТекстЗапроса3, глТаблСвойств);

// глТаблСвойств имеет 3 колонки - Номенклатура, ВидСвойства_Код и ЗначениеСвойства

глТаблСвойств.ДобавитьИндекс("индНом", "Номенклатура");
глТаблСвойств.ДобавитьИндекс("индВидСвойства_Код", "ВидСвойства_Код");

/// тут какой-то еще код

Ключ = СтрЗаменить(ТекКол, "_", "");
глТаблСвойств.УстановитьФильтр(Ключ, Ключ, "индВидСвойства_Код");

Список_ = СоздатьОбъект("СписокЗначений");
глТаблСвойств.Выгрузить(Список_, "индВидСвойства_Код", "ЗначениеСвойства", 1);


В итоге в объекте список Список_ всего одно значение (самое первое из таблицы для заданного вида свойства).
Если я выгружаю так:

глТаблСвойств.Выгрузить(Список_, "индВидСвойства_Код", "ЗначениеСвойства");

То получаю список из 138 значений. Реально уникальных значений там штук 10.

Пытался устанавливать флаг чТолькоУникальныеЗначения = 1 и в методе ДобавитьИндекс и в методе УстановитьФильтр - эффект один - в список попадает одно самое первое значение.

Что я делаю не так?
1 m-serg74
 
13.08.14
19:54
(0) не пойму, если устанавливаешь фильтр по одному конкретному значению, а сколько уникальных ты желаешь получить?
2 m-serg74
 
13.08.14
19:57
+(1) почитай вдумчиво:

УстановитьФильтр / SetFilter

    Синтаксис: УстановитьФильтр(КлючМин, КлючМакс, [Индекс = ""], [чТолькоУникальные = 0], [чИнверсия = 0])

    Параметры:

            КлючМин - тип: любой. Нижняя граница фильтра. Задаётся так же, как в методе НайтиСтроку().
            КлючМакс - тип: любой. Верхняя границы фильтра. Задаётся так же, как в методе НайтиСтроку().
            Индекс - тип: Строка, Число. Идентификатор или номер индекса. По умолчанию используется основной индекс.
            чТолькоУникальные - тип: Число. Если 1 - то в выборку попадут только строки с уникальным значением ключа.
            чИнверсия - тип: Число. 0 - обычный фильтр, 1 - инверсный фильтр.

        Если индекс построен по одной колонке, то в качестве ключей можно использовать значение колонки. Если же индекс по нескольким колонкам, то ключ должен быть СписокЗначений, содержащий значения ключевых колонок, заданных в методе ДобавитьИндекс().

        Один из ключей может быть опущен - при этом в качестве опущеного значения будет автоматически задействовано минимально/максимально возможное значение. Т.е. фильтр будет с открытой границей.

    Описание: устанавливает динамический фильтр на таблицу по указанному индексу. Фильтр влияет на работу методов: ВНачало(), ВыбратьСтроки(), ВКонец(), ПолучитьСтроку(), СледующаяСтрока(), ПредыдущаяСтрока(),Свернуть(),Итог(), ЗаполнитьКолонку(), Выгрузить(), Загрузить(), Объединить().


НЕ влияет на работу..... Выгрузить()....
3 m-serg74
 
13.08.14
19:59
+(2) тьфу блин, сорри, сам наоборот затупил... влияет, короче, (2) не читать и не принимать во внимание :)
4 Чел
 
13.08.14
20:07
(1) Блин, точно! Всё, под вечер мозг не работает. У меня же индекс и фильтр по одной колонке, а уникальные значения я по другой хочу получить....

Вот я дурень! )))))

Спасибо!
5 m-serg74
 
13.08.14
20:07
(4) )))
6 m-serg74
 
13.08.14
20:08
ну я тоже в (2) тупанул, переработался наверное...
7 Чел
 
13.08.14
20:09
Теперь другая задачка: нужно отфильтровать строки таблицы по нескольким значениям одной колонки...
Подозреваю, что мне может помочь метод Подмножество. Но в документации очень скудно про него написано.
Или не поможет...
8 m-serg74
 
13.08.14
20:13
(7) да Подмножество вроде практически как УстановитьФильтр работает... на 100% не уверен конечно
9 Чел
 
13.08.14
20:17
(8) Да, да! Подмножество мне не поможет. Подмножество, похоже, помогло бы в сабже. А вот для новой задачи ВнутреннееСоединение - самое то! :)