Имя: Пароль:
1C
 
8.2 "Быстрая" альтернатива ОтборСтрок
0 g_frost
 
01.09.10
18:18
Хочу поделиться приятной плюшкой
Как мне кажется довольно удобный вариант интерфейса - две таблицы, например работы и исполнители, выбираем работу - видим тех исполнителей которые к ней привязаны.

Как делал раньше - событие при активации строки создавал новую фиксированную структуру с параметром/параметрами отбора и устанавливал для второй табличной части ОтборСтрок
Минусы - отображение тормозит, особенно если таких отбора 2-3

Новый вариант - в форме настроил условное оформление с видимостью колонок табличной части.
Видимость = истина; Объект.РАботы.Идентификатор = Объект.Исполнители.Идентификатор; поля, Объект.Исполнители.Номерстрок(,Исполнитель,Часы)

и

Видимость = ложь; Объект.РАботы.Идентификатор <> Объект.Исполнители.Идентификатор; поля, Объект.Исполнители.Номерстрок(,Исполнитель,Часы)

Второй вариант - буквально летает, даже в тонком клиенте через апач. Рекоммендую использовать именно второй вариант
1 xReason
 
01.09.10
18:29
Записал
2 Armando
 
01.09.10
18:31
потом посмотрю
3 Immortal
 
01.09.10
21:09
динамические списки для кого придумали?
4 MRAK
 
01.09.10
21:11
(3) может он про табличную часть?
5 Immortal
 
01.09.10
21:12
(4) судя по (0) это отнюдь не 2 ТЧ
6 g_frost
 
02.09.10
09:43
(5) это именно две ТЧ, условное оформление настраивается для формы в целом
7 ProgAL
 
02.09.10
10:46
А что это за метод "НомерСтрок"? В помощнике нет такого.
8 Stepa86
 
02.09.10
11:21
у меня шапка пропала в таблице, так и должно быть?
9 g_frost
 
02.09.10
11:49
(7) это не метод это название колонки "номерстроки"
10 g_frost
 
02.09.10
11:54
(8) что то не так делаете, у меня шапка видна

пример настроек
http://saveimg.ru/show-image.php?id=cddfe4adba1bf7db10e2240618ca86e5
11 Stepa86
 
02.09.10
12:06
(10) фикзнает что было, но начал показывать... другая проблема, сделал кнопку "Фильтровать по тек. строке" которая включает/отключает фильтрацию. Отключает замечательно, а вот после включения фильтр не ставится, нужно выполнить каку нить команду, которая сбегает на сервер и после этого начинает работать фильтр...

вот видео, как работает: http://screencast.com/t/NzliMjMyY

код:

&НаКлиенте
Процедура ФильтроватьПоТекСтроке(Команда)
   
   Элементы.ВозвратыФильтроватьПоТекСтроке.Пометка = Не Элементы.ВозвратыФильтроватьПоТекСтроке.Пометка;
   
   УстановитьОтборВозврата();
   
КонецПроцедуры

Процедура УстановитьОтборВозврата()
   
   ФильтрПоТекСтроке = Элементы.ВозвратыФильтроватьПоТекСтроке.Пометка;
   
   Элементы.Возвраты.ИзменятьСоставСтрок = Не ФильтрПоТекСтроке;
   
   Для Каждого цЭлемент Из УсловноеОформление.Элементы Цикл
       
       Если цЭлемент.Представление = "ВидимостьВозвратовПоТекСтроке" Тогда
           
           цЭлемент.Использование = ФильтрПоТекСтроке;
           
       КонецЕсли;
       
   КонецЦикла;
   
КонецПроцедуры
12 g_frost
 
02.09.10
12:18
(11) попробуйте тот же вариант с условным оформлением но
1. Новый реквизит формы - ТекущийОтбор
2. Условие Видимость истина если не ТекущийОтбо.Заполнен или ТекущийОтбор=Объект.ТабличнаяЧасть.ОтбираемоеЗначение
3. Условие Видимость ложь если ТекущийОтбо.Заполнен и ТекущийОтбор<>Объект.ТабличнаяЧасть.ОтбираемоеЗначение
4. при нажатии кнопки отбор
если Элементы.ТабЧасть.ТекущиеДАнные.ОтбираемоеЗначение = текущийотбор тогда
текущийотбор = неопределено иначе текущийотбор = Элементы.ТабЧасть.ТекущиеДАнные.ОтбираемоеЗначение

(не забудьте проверить Элементы.ТабЧасть.ТекущиеДАнные на неопределено)

отпишитесь пожалуйста по результатам, интересно сработает или нет
13 Stepa86
 
02.09.10
12:24
(12) не понял сути этого варианта. Предлагаете менять не использование строки условного оформления, а отбор? Как то уж больно трудоемко и быстрее будет через ОтборСтрок
14 g_frost
 
02.09.10
12:44
(13) насчет трудоемкости спорно
весь код
&НаКлиенте
Процедура Отобрать(Команда)
   Если Элементы.Часть1.ТекущиеДанные<>Неопределено Тогда
       Если Элементы.Часть1.ТекущиеДанные.Работа<>ТекущийОтбор Тогда
            ТекущийОтбор = Элементы.Часть1.ТекущиеДанные.Работа;
       иначе    
            ТекущийОтбор = Неопределено;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

а вот и обработка
http://webfile.ru/4705054

я не имею предубеждений против отборстрок, просто у клиента эта конструкция делает 2 серверных вызова и тормозит при отборажении, особенно если нужно добавить отбор строк для 2х табличных частей или по большой таблице
15 Stepa86
 
02.09.10
12:50
(14) главная проблема в том, что у меня 6 колонок связи, а не одна... и они так то независимы, просто нужно иногда посмотреть связи
16 Kerk
 
02.09.10
18:34
Хм... надо посмотреть.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс