Имя: Пароль:
1C
1С v8
Признак отбора строки ТП
0 kugelfangg
 
19.01.12
10:59
Здравствуйте, господа!
Подскажите пожалуйста, каким образом можно получить признак строки Табличного поля сообщающий, удовлетворяет ли данная строка условиям отбора(фильтра).

На пример:
В Табличном поле(ТП)10 строк. После выполнения отбора в ТП отображается только 4 из них. Как программно можно определить данные строки?
1 kugelfangg
 
19.01.12
11:09
апп
2 1с-кин
 
19.01.12
11:15
ТекущаяСтрока?
3 1с-кин
 
19.01.12
11:16
можно также в ТЗ выгрузить данные ТП
4 kugelfangg
 
19.01.12
11:30
(2) каким оператором из ТекущаяСтрока можно получить данный признак?
5 1с-кин
 
19.01.12
11:31
(4) признак - никаким, нет такого. А сами строки - можно.
Нужен признак - сравнивайте с исходной таблицей, и выводите его сами.
6 kugelfangg
 
19.01.12
11:31
(3) в ТЗ без определенного условия выгрузятся все 10 а не 4.
7 1с-кин
 
19.01.12
11:34
(6) какое условие вам нужно? выгрузятся те строки, которые в ТП. ТП не будет содержать "лишних" строк - это не ТЧ, это просто визуальное представление таблицы на форме.
Хотя если ТП привязана к ТЧ - тогда да. Отвяжите :)
8 kugelfangg
 
19.01.12
11:36
Подскажите пожалуйста, а без "отвезки" это никак не возможно?
Просто сделать это не представляется возможным, в связи с особенностями кода.
9 shuhard
 
19.01.12
11:38
(8) [это никак не возможно]
я бы засунул отбор в построитель запроса
10 kugelfangg
 
19.01.12
11:40
(9)Ок. Большое спасибо за идею.
11 1с-кин
 
19.01.12
11:42
(10) а вы еще не сделали отбор запросом? 0_о
12 kugelfangg
 
19.01.12
11:45
Пока нет, но уже работаю над этим!=)
13 shuhard
 
19.01.12
11:46
(12) документ записать не забудь
14 aleks-id
 
19.01.12
11:46
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(МояТЧсОтбором);
Результат = Построитель.Результат.Выгрузить();
15 kugelfangg
 
19.01.12
15:29
Спасибо всем за помощь! В итоге получился код:


Построитель = Новый ПостроительЗапроса;
   Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЭлементыФормы.Пользователи.Значение);
   
   Для Каждого ЭлементОтбора Из ЭлементыФормы.Пользователи.ОтборСтрок Цикл
       Если ЭлементОтбора.Использование Тогда            
           Построитель.Отбор.Добавить(ЭлементОтбора.Имя);
           Построитель.Отбор[ЭлементОтбора.Имя].Использование = ЭлементОтбора.Использование;
           Построитель.Отбор[ЭлементОтбора.Имя].Значение = ЭлементОтбора.Значение;
           Построитель.Отбор[ЭлементОтбора.Имя].ВидСравнения = ЭлементОтбора.ВидСравнения;
       КонецЕсли;    
   КонецЦикла;    
   Результат = Построитель.Результат.Выгрузить();    
                                                                   
   Для каждого Строка из Пользователи Цикл                      
       Если НЕ Результат.Найти(Строка.Пользователь,"Пользователь") = Неопределено Тогда
           Строка.Отметка = Истина;
       КонецЕсли;    
   КонецЦикла;
16 shuhard
 
19.01.12
15:33
(15) не айс:
Построительчик=Новый ПостроительЗапроса;
   Построительчик.ИсточникДанных=Новый ОписаниеИсточникаДанных(Товары); // табличная часть документа
   // копирование отбора
   Для Каждого СтрокаОтбора  из ЭлементыФормы.Товары.ОтборСтрок Цикл     // цикл по отбору  табличной части
       СтрокаОтбораПостроителя=Построительчик.Отбор.Добавить(СтрокаОтбора.Имя);
       ЗаполнитьЗначенияСвойств(СтрокаОтбораПостроителя, СтрокаОтбора);  // копирование нужных реквизитов отбора одной строкой
   КонецЦикла;