Имя: Пароль:
1C
1С v8
Выделение текущей строки фоном (8.1)
0 u2006
 
17.07.11
09:22
Как оказалось, эта задача выполняется "через одно место", другого способа не нашел.
Есть табличное поле, режим выделения строки - Ячейка. Для того чтобы выделить текущую строку фоном необходимо при активизации строки выполнить обновление строк табличного поля, далее при выводе строки (при получении данных не получается) сравнить текущие данные из оформления строки с текущими данными строки, в случае совпадения меняем фон.
Господа, есть ли другой способ, более рациональный?
1 Amra
 
17.07.11
09:25
ПЕреходи на 8.2, там это реализовано
2 skunk
 
17.07.11
09:37
хм ... или я чего-то не понял ... или почему религия запрещает использовать приввыводестроки
3 u2006
 
17.07.11
09:46
(2) когда изменяется текущая строка, при выводе не отрабатывает
4 Фокусник
 
17.07.11
10:39
(0) "режим выделения строки - Ячейка" ИМХО, если хочется выделять фоном всю строку, то и режим выделения нужно ставить - Строка. Что мешает сделать так?
5 u2006
 
17.07.11
10:52
(4) не в этом вопрос, это все понятно, так не устраивает, потому что при копировании в буфер копируется вся строка
6 u2006
 
17.07.11
11:13
Блин, что за долюбодятсво, теперь выяснилось что для форм списков и журналов данное условие не работает в принципе

Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Если Элемент = Неопределено Тогда
       Возврат;
   КонецЕсли;
   Если ДанныеСтроки = Элемент.ТекущиеДанные Тогда
       ОформлениеСтроки.ЦветФона = WebЦвета.Голубой;
   КонецЕсли;
КонецПроцедуры

ДанныеСтроки никогда не равняются Элемент.ТекущиеДанные
Не пойму в чем причина?
7 u2006
 
17.07.11
11:15
Возможно нельзя сравнивать типы ТекущиеДанныеСписка?
8 u2006
 
17.07.11
11:35
Собственно новый вопрос? Как понять в динамическом списке в процедурах ПриВыводеСтроки или ПриПолученииДанных является ли обрабатываемая строка текущей?
9 u2006
 
17.07.11
11:37
Просто по сравниваню значений из колонок не пойдет, т.к. пишу общую процедуру для всех форм.
10 u2006
 
17.07.11
11:40
Пробовал через перебор значений ячеек и их сравнение, наткнулся на вылет с дампом платформы...
11 u2006
 
17.07.11
11:59
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Если Элемент = Неопределено Тогда
       Возврат;
   КонецЕсли;
   Если ТипЗнч(ДанныеСтроки) = Тип("ТекущиеДанныеСписка") Тогда
       //делаем вывод - это динамический список и в нем обычное сравнение не прокатит
       //попробуем через сравнения значений ячеек
       ТекущаяСтрока = Элемент.ТекущаяСтрока;
       ОформлениеТекСтроки = Элемент.ОформлениеСтроки(ТекущаяСтрока);
   Иначе
       Если ДанныеСтроки = Элемент.ТекущиеДанные Тогда
           ОформлениеСтроки.ЦветФона = WebЦвета.Голубой;
       КонецЕсли;
   КонецЕсли;  
КонецПроцедуры

ОформлениеТекСтроки = Элемент.ОформлениеСтроки(ТекущаяСтрока); Вот эта строка вызывает дамп
12 Nexux
 
17.07.11
12:00
Если Элемент.ТекущаяСтрока.Ссылка = Строка.ДанныеСтроки.Ссылка Тогда ...
13 Nexux
 
17.07.11
12:02
Строка = ОформленияСтрок
14 u2006
 
17.07.11
12:03
(12) см (9) не подойдет
15 Nexux
 
17.07.11
12:08
м.б. тогда приполучении данных сравнивать ОформленияСтрок.ДанныеСтроки и Элемент.ТекущиеДанные, то это жпо
16 u2006
 
17.07.11
12:10
(15) в динамических списках они не сравниваются
17 u2006
 
17.07.11
12:11
15 см (6) уже все пробовал
18 u2006
 
17.07.11
12:11
15 = (15)
19 Nexux
 
17.07.11
12:14
угу щаз смотрел у себя, везде по данным колонок(
20 u2006
 
18.07.11
10:11
апну, может сегодня кто подскажет
21 hhhh
 
18.07.11
10:28
(20) отладчик в таких случаях рулит. Поставь там точку останова и просмотри все поля, которые там. Ну и выберешь, чего с чем сравнить.
22 u2006
 
18.07.11
10:31
(21) для общей процедуры не пойдет см (9)